我有一些 AJAX 调用,我在其中返回一个 JSON 对象作为响应。此 JSON 对象始终具有相同的结构。然而,有时如果 PHP 脚本失败,JSON 结构的某些对象未定义甚至不存在。
这也发生在页面中存在的一些“全局”变量上,我在一些 JS 文件中使用,但随后转到另一个页面,在那里我使用了这些 JS 文件,甚至没有写入变量。
所以,我想创建一个函数 is_defined()
,我可以向它询问是否定义了一个变量。函数如下:
function is_defined(ob, can_empty){
if(can_empty === undefined || can_empty == '') can_empty = false
return ob !== undefined && ob !== null && (ob !== '' || can_empty)
}
因此,如果传递的变量是 NULL
或 undefined
,或者它是空的(并且不能为空),我将返回 false
。
当甚至没有写入变量时,我的问题就来了,因为我无法将它传递给函数,因为引发了 Uncaught ReferenceError: obj is not defined 错误
。
所以我的问题是有没有办法创建一个函数来检查变量是否存在并且已定义,因为我想集中所有这些检查进入一个函数而不是写 obj !== undefined || obj !== null
不时出现在我的代码中。
我认为使用双 Not 运算符 (!!!obj
) 会强制转换为 false,但如果未写入变量,我将面临同样的问题。
编辑: 正如声明一样,这里的问题是能够检查函数内未声明和 undefined variable ,因此我可以将变量传递给函数而无需在调用它之前检查它是否声明了变量。
感谢大家的宝贵时间和回答!
亲切的问候!
最佳答案
[...] is there any way to create a function to check if a variable exists and is defined [...]
不,没有。当您将变量传递给函数时,它总是会尝试解析该变量。如果未声明,它将引发引用错误。
Relevant section from the ECMAScript specification .
在将变量传递给函数之前,您必须检查变量是否通过 typeof
声明。
关于Javascript:将 undefined variable 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28611192/