代码题
大约 1 分钟
下面代码输出什么
function sayHi() {
console.log(name);
console.log(age);
var name = "lydia";
let age = 21;
}
sayHi();
undefined 和 RefereceError
function sayHi() {
// var 有变量提升
var name = undefined;
console.log(name);
console.log(age);
name = "lydia";
// let 没有变量提升,会有暂时性死区的情况,所以先调用在声明会报错
let age = 21;
}
sayHi();
下面代码输出什么
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
3 3 3和 0 1 2
第一个for循环的var没有作用域,所以结果是333,第二个有作用域,所以是012
下面代码输出什么
function sum(a, b) {
return a + b;
}
sum(1, "2");
"12"
返回的是数字和字符串之间的加减,隐式转换,字符串型的”12”
打印出的 size 值是多少
let s = new Set();
s.add([1]);
s.add([1]);
console.log(s.size);
2
因为添加的是数组,属于引用数据类型,每一个地址都是不一样的,所以不存在重复的情况。
如果添加的是1,这样的基本数据类型,那么就是1,因为set能实现自动去重。