2021-02-02前端每日一题搬运1~5

1.输出是什么?

1

D:undefinedReferenceError
用var声明的变量存在声明提升,而let不会×会提升,但不会被初始化,所以在输出时name相当于声明未赋值状态,age处于不能被访问状态

function sayHi() {
	var name;
	console.log(name);
	console.log(age);
	name = 'Lydia';
	let age = 21;
}
sayHi();

在这里插入图片描述

2.输出是什么?

2

C:3 3 30 1 2
setTimeout()是异步函数,需要等待同步for执行结束后才开始执行,此时用var声明的变量 i 暴露在全局作用域下,已经被递增为3,所以输出三次的值相同;
let声明的变量拥有块级作用域({}内),每次遍历得到的值会被保护起来,不被覆盖,所以各自输出递增后的新值
2

3.输出是什么?

3

B:20NaN
diameter方法中的this.radius写在常规函数中,this指向当前调用的对象shape,结果10*2 = 20;
perimeter方法中的this.radius由于写在箭头函数中,不存在块级作用域,所以this指向当前周围作用域,因为该方法外没有其他常规函数,所以this指向全局对象window,结果2* Math.PI*undefined = NaN
3

4.输出是什么?

4

A:1false
+触发隐式转换,true会被隐式转换为1;
!表示取反,字符串是真值,取反为false
4

5.哪一个是正确的?

5

A:mouse.bird.size是无效的
. 和 [“ ”] 都能访问对象中属性名对应的属性值,[" "] 还可以为对象添加任意属性名;
访问对象中不存在的属性名是无效的,而[ ]会解释完[ ]里面的内容再计算,所以mouse[bird.size]相当于mouse[“small”],为true
5

官方解答链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值