gpt4 book ai didi

javascript - David Shariff 的 JavaScript 测验问题

转载 作者:行者123 更新时间:2023-11-29 10:14:34 24 4
gpt4 key购买 nike

Quiz 需要一些帮助:

问题 5:

function bar() {
return foo;
foo = 10;
function foo() {}
var foo = '11';
}
alert(typeof bar());

问:警报是什么?答:函数。

基于此tutorial ,即使它没有说清楚,这可能是我的误解,我期待以下行为,当 bar() 被调用时:

  1. 函数 foo() 添加到 bar() 的词法环境中。
  2. var foo = '11'; 覆盖此定义,使 foo 未定义。
  3. 执行return foo;时,foo未定义。

初始化过程中发生了什么?有好的文档的链接吗?

问题 12:

String('Hello') === 'Hello';

问:结果如何?答:没错。

我以为 String() 会返回一个对象,而 'Hello' 是原始字符串,因此答案是“false”。为什么是“真”?

问题 20:

NaN === NaN;

问:结果如何?答:假的。

这是什么逻辑?这里发生了什么?

最佳答案

问题 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

引用 the specification :

When String is called as part of a new expression, it is a constructor: it initialises the newly created object.

问题 20:

几乎是因为规范是这么说的。 NaN 不等于任何东西,包括它自己。基本原理是不要错误地使两个错误计算彼此相等。

关于javascript - David Shariff 的 JavaScript 测验问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25347237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com