首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript isset函数

Javascript isset函数
EN

Stack Overflow用户
提问于 2012-02-14 09:43:09
回答 4查看 11.6K关注 0票数 1

我创建了一个isset函数来检查是否定义了一个变量,而不是null。这是我的密码:

代码语言:javascript
复制
isset = function(a) {
    if ((typeof (a) === 'undefined') || (a === null))
        return false;
    else
        return true;
};
var a = [];

// Test 1
alert(isset(a['not']); // Alerts FALSE -> works OK
// Test 2
alert(isset(a['not']['existent'])); // Error: Cannot read property 'existent' of undefined

有什么建议可以让我的功能在测试2中发挥作用吗?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-14 09:49:00

您正在尝试检查未定义对象的属性。这没有任何意义。你可以这样写:

代码语言:javascript
复制
alert(isset(a['not']) && isset(a['not']['existent']));
票数 4
EN

Stack Overflow用户

发布于 2012-02-14 09:53:44

那是行不通的,你也不能让它起作用。会发生这样的情况: js引擎试图计算‘to’和get's‘’undefined‘,然后尝试计算未定义的属性’存在‘,然后得到该错误。所有这些都发生在之前,调用您的函数.

你能做的是:

代码语言:javascript
复制
var isset = function(obj, props) {
    if ((typeof (obj) === 'undefined') || (obj === null))
        return false;
    else if (props && props.length > 0)
        return isset(obj[props.shift()], props);
    else
        return true;
};

然后你就这样称呼它:

代码语言:javascript
复制
var a = [];

// Test 1
alert(isset(a, ['not']);
// Test 2
alert(isset(a, ['not', 'existent']));

(**这只是一个伪代码,您可能需要修改它才能实际工作)

票数 3
EN

Stack Overflow用户

发布于 2012-02-14 09:49:46

测试2不能工作,因为"a' not '“值解析在"isset”函数调用之前,并导致运行时错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9274674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档