Javascript:将 undefined variable 传递给函数

标签 javascript function variables undefined

我有一些 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)
}

因此,如果传递的变量是 NULLundefined,或者它是空的(并且不能为空),我将返回 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/

相关文章:

c - 如何将结构传递给 C 中的函数

function - PowerShell不再从文本框中读取输入

Java变量和构造函数初始化?

python - 从另一个类访问方法变量

javascript - 在函数后面查找 $(this)

javascript - angularJS 过滤日期

javascript - 通过 php 添加到变量将不起作用

javascript - 无法读取未定义的属性 "..."

javascript - HTML 内容不会在电子邮件中呈现

javascript - 这个JS时间码可以用吗?我可以让它变得更好吗?