Quiz需要一些帮助:
问题5:
function bar() {
return foo;
foo = 10;
function foo() {}
var foo = '11';
}
alert(typeof bar());
问:什么是警报? 答:功能。
基于这个tutorial,即使它没有说清楚,这可能是我的误解,当bar()
被调用时,我期待以下行为:
foo()
添加到bar()
。var foo = '11';
会覆盖此定义,foo
未定义。return foo;
时,foo
未定义。初始化会发生什么?任何良好文档的链接?
问题12:
String('Hello') === 'Hello';
问:结果如何?
答:是的。
我认为String()
会返回一个对象而'Hello'
是一个原始字符串,因此答案是" false"。为什么它是真的"?
问题20:
NaN === NaN;
问:结果如何?
A:假。
逻辑是什么?这里发生了什么?
答案 0 :(得分:3)
问题5:
这是因为提升,我更详细地回答了这个here。
function bar() {
return foo;
foo = 10;
function foo() {}
var foo = '11';
}
在语义上与:
相同function bar() {
var foo = function(){}; // function declarations and
// variable declarations are hoisted
return foo;
foo = 10;
foo = '11';
}
问题12:
将某些内容作为函数调用String
不会创建新对象。请注意,它不是作为构造函数调用的:
String("a"); // a primitive value type string "a"
new String("a"); // this creates a new string object
当String作为新表达式的一部分被调用时,它是一个构造函数:它初始化新创建的对象。
问题20:
几乎是因为规范说明了这一点。 NaN
不等于任何东西,包括它自己。理由是不要错误地将两个错误估计相等。
答案 1 :(得分:1)
我已经完成了一系列javascript视频,其中我正在解释David Sharrif的所有javascript问题。看看这个播放列表: