代码之家  ›  专栏  ›  技术社区  ›  Andreas Grech

var undefined=真;

  •  7
  • Andreas Grech  · 技术社区  · 15 年前

    var undefined = true;

    undefined 它只是一个变量,包含 'undefined' ,所以下面应该执行 alert :

    var undefined = true, 
        x;
    
    if (x) {
        alert('ok');
    }
    

    但事实并非如此,我的问题是为什么?

    在进一步的实验中,我尝试了以下方法:

    var undefined = true, 
        x = undefined;
    
    if (x) {
        alert('ok');
    }
    

    这一次 警觉的 已执行。

    所以我的问题是…因为在第一个片段中 x 持有 (因为它没有初始化),为什么 执行?奇怪的是当你明确地说 未定义 x = undefined ),的 警觉的

    3 回复  |  直到 12 年前
        1
  •  17
  •   dtb    15 年前

    名为 undefined 这个值叫做

    var undefined = true, 
        x;
    

    未定义 设置为值 true ,和 x 未定义

    var undefined = true, 
        x = undefined;
    

    在本例中,变量 设置为值 是的 还有,还有 设置为变量中包含的值 未定义 是的 ).

    未定义 ,则不能更改未初始化变量设置为值的事实 未定义 .

        2
  •  1
  •   Pointy    15 年前

    想象一下,如果Java允许您使用“null”作为标识符。好吧,我猜Java没有Javascript那样的强制。不管怎样,Javascript语句

    if (x) alert("foo");
    

    涉及将“x”的值隐式强制为布尔值。该值未定义,因此将其强制为“boolean”会导致 false .

        3
  •  0
  •   Bob    15 年前

    未初始化的变量获取特殊值 undefined . 当你把一个变量赋给另一个变量时,你给它一个字符串,它引用了你在当前范围内定义的变量。在本例中,您定义了一个名为 未定义 未定义 然后给它赋值。