这是期前讨论的,由于比较琐碎,所以整理在一起。

大家认为如下的函数会返回什么?

function test() {
    return
    {
        status: true
    };
}

答案是返回 undefined,因为 return 后面有回车(被认为是条完整的语句),可以认为等效下面的代码

function test() {
    return;
    {
        status: true
    };
}

清羽 同学从 ECMA 上找到了相应的解释

ReturnStatement:
    return [no LineTerminator here] Expressionopt ;    ——from Ecma-262

-- Split --

var Obj = {};
alert(Obj.abc == undefined); //true 

undefined = 'hello, world';
alert(undefined == 'hello, world'); //true

Obj.abc = 'hello, world';
alert(Obj.abc == undefined);

上述的代码最后 alert 的结果为 true 还是 false ?

在 Mozilla 相关的 Javascript 文档中, 对于 undefined 的描述 中可以得知

undefined is a property of the global object, i.e. it is a variable in global scope. 

The initial value of undefined is the primitive value undefined.

所以,「undefined」 的值是可以被覆盖的。所以,上述的答案为 true 。另,相对于「undefined」,null 则为关键字( 来源

null, a special keyword denoting a null value; null is also a primitive value. 
Because JavaScript is case-sensitive, null is not the same as Null, NULL, 
or any other variant

「同样的还有NaN, 可以试一下:」from 小马( 相关解释 )。

var a = parseInt('hello123'); 
alert(a); //NaN

NaN = 'hello123';
alert(NaN == 'hello123'); //true

var b = parseInt('hello123'); 
alert(b == 'hello123');  //?

-- Split --

本期最后一个问题:

<script>
function doClick() {
    alert(1);
}
</script>
<a href="#" onclick="执行:doClick();">测试</a>

上述的代码会执行(弹出 1)吗?详细描述请参看 http://www.hedgerwow.com/360/dhtml/js_label/

-- EOF --