Jin*_*esh 879 javascript variables undefined
我想检查变量是否已定义.例如,以下引发了未定义的错误
alert( x );
Run Code Online (Sandbox Code Playgroud)
我怎么能抓到这个错误?
Nat*_*ium 1647
在JavaScript中,null是一个对象.对于不存在的事物,还有另一个价值undefined.null几乎所有在文档中都找不到某些结构的情况下,DOM都会返回,但在JavaScript本身undefined就是使用的值.
第二,不,没有直接的等价物.如果您真的想要专门检查null,请执行以下操作:
if (yourvar === null) // Does not execute if yourvar is `undefined`
Run Code Online (Sandbox Code Playgroud)
如果要检查变量是否存在,那么只能用try/ 来完成catch,因为typeof它将处理未声明的变量和使用undefined等效值声明的变量.
但是,要检查变量是否已声明且不是undefined:
if (typeof yourvar !== 'undefined') // Any scope
Run Code Online (Sandbox Code Playgroud)
如果您知道该变量存在,并想检查其中是否存储了任何值:
if (yourvar !== undefined)
Run Code Online (Sandbox Code Playgroud)
如果您想知道成员是否存在独立但不关心其价值是什么:
if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance
Run Code Online (Sandbox Code Playgroud)
如果你想知道变量是否真实:
if (yourvar)
Run Code Online (Sandbox Code Playgroud)
Mic*_*les 336
真正测试变量是否的唯一方法undefined是执行以下操作.请记住,undefined是JavaScript中的一个对象.
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
Run Code Online (Sandbox Code Playgroud)
此线程中的其他一些解决方案将使您相信变量未定义,即使它已被定义(例如,值为NULL或0).
Jas*_*n S 66
从技术上讲,正确的解决方案是(我相信):
typeof x === "undefined"
Run Code Online (Sandbox Code Playgroud)
你有时会变得懒惰和使用
x == null
Run Code Online (Sandbox Code Playgroud)
但是这允许未定义的变量x和包含null的变量x都返回true.
Dmi*_*kov 20
更简单,更简便的版本是:
if (!x) {
//Undefined
}
Run Code Online (Sandbox Code Playgroud)
要么
if (typeof x !== "undefined") {
//Do something since x is defined.
}
Run Code Online (Sandbox Code Playgroud)
Joe*_*Joe 15
我经常这样做:
function doSomething(variable)
{
var undef;
if(variable === undef)
{
alert('Hey moron, define this bad boy.');
}
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 15
抱歉,死灵术,但这里的大多数答案混淆了“未定义”和“未定义”
未定义- 声明了变量,但其值未定义。
未定义- 甚至没有声明变量。
检查这两种情况的唯一安全方法是使用typeof myVar === 'undefined'
myVar === undefined仅检查案例编号 (1)。myVar如果案例号 (2)甚至没有声明,它仍然会抛出“myVar 未定义” 。OP 特别询问“甚至没有定义”的情况(2)。
PS 我确实知道“案例 2”在现代 ES6 世界中变得越来越罕见,但一些旧的遗留组件仍然存在于过去。
该错误告诉您x\xe2\x80\x99 根本不存在!它还没有声明\xe2\x80\x99,这与赋值不同。
var x; // declaration\nx = 2; // assignment\nRun Code Online (Sandbox Code Playgroud)\n\n如果您声明了x,则\xe2\x80\x99不会收到错误。您将收到一条警报,指出“undefined因为x存在/已声明,但尚未为\xe2\x80\x99 分配值”。
要检查变量是否已声明,您可以使用typeof,检查变量是否存在的任何其他方法都会引发与最初相同的错误。
if(typeof x !== "undefined") {\n alert(x);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这是检查存储在 中的值的类型x。undefined仅当x尚未声明\xe2\x80\x99 或已声明但尚未分配时,它才会返回。
的void操作者返回undefined任何参数/表达传递给它。所以你可以测试结果(实际上一些缩小器将你的代码从undefined改为void 0以保存几个字符)
例如:
void 0
// undefined
if (variable === void 0) {
// variable is undefined
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1071388 次 |
| 最近记录: |