第29天:输出
#javascript #100daysofcode #day29

在本文中,我们将深入研究JavaScript输出的各种方案,以帮助您巩固知识并提高编码技巧ð。

1。 typeof null的输出是多少?
输出为'object'。由于历史原因,这是JavaScript中著名的怪癖。尽管null是原始价值,但typeof null返回'object',这可能会引起误导。

2。解释0.1 + 0.2 === 0.3的输出。
该表达式评估为false。这是由于浮点数的存储方式以及表示二进制中小数分数的固有不精确的方式。

3。以下代码将记录什么?

for (var i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i);
  }, 1000);
}

它将记录5五次。发生这种情况是因为setTimeout回调是在循环完成后执行的,到那时,i的值为5

4。以下代码的输出是什么?

console.log('one');
setTimeout(function() {
  console.log('two');
}, 0);
console.log('three');

输出将是:

one
three
two

这是因为JavaScript事件循环确保将setTimeout回调推到队列的末端,从而允许其他同步代码先执行。

5。解释以下功能的输出

function foo() { 
   console.log(foo === foo); 
} 
foo();

输出将为true。在JavaScript中,函数是一流的对象,当调用foo时,它在其范围内引用自己。

6。 '5' + 35 - '3'的输出是什么?
'5' + 3导致字符串'53',而5 - '3'产生数值2。在这些情况下,JavaScript执行类型的胁迫。

7。预测以下代码的输出:

const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
  setTimeout(function() {
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 3000);
}

对于所有迭代,输出将相同,显示了最后一个索引和元素(Index: 4, element: undefined)。这是因为闭合捕获了对变量i的引用,该循环完成后已更新为4

8。在以下代码中说明letvar之间的输出差:

for (let j = 0; j < 3; j++) {
  setTimeout(function() {
    console.log(j);
  }, 1000);
}

var不同,let关键字在每次迭代中为j创建了一个新的绑定,从而产生了预期的输出:012

9。代码的输出是什么:

const name = 'Dev';
(function() {
  if (typeof name === 'undefined') {
    console.log('Welcome to ' + name);
  } else {
    console.log('Hello, ' + name);
  }
  var name = 'to';
})();

输出为Welcome to undefined。这是由于JavaScript的功能范围和提升行为。可变name悬挂了,但其值是函数范围内的undefined

10。解释输出:

const person = { name: 'John', age: 30 };
const newPerson = person;
newPerson.name = 'Jane';
console.log(person.name);

输出为Jane。在JavaScript中,对象是通过参考分配的,因此personnewPerson都指向同一对象。通过一个参考更改对象的属性也会影响另一个参考。

11。 console.log(typeof NaN);的输出是什么? 输出将为"number"。 NAN(非数字)被认为是“数字”类型的数值。 ð¢

12。解释输出:

var x = 1;
if (function f() {}) {
    x += typeof f;
}
console.log(x);

输出将为"1undefined"。由于功能范围,if语句中的函数f在其外部无法访问。 ð

13。以下代码将输出什么?

console.log(1 < 2 < 3);
console.log(3 > 2 > 1);

输出将是:

true
false

在JavaScript中,由于从左到右的评估,这些被锁定的比较操作员无法正常工作。

14。解释输出:

console.log(typeof typeof 1);

输出将为"string"。第一个typeof返回"number",然后第二个typeof返回了"number"ð的类型,即字符串。

15。以下代码段的输出是什么?

var x = 10;
var foo = {
    x: 20,
    bar: function() {
        return this.x;
    }
};
var baz = foo.bar;
console.log(baz());

输出将为10。在JavaScript中,该值的值取决于调用函数的方式,而不是定义的位置。