ES6相关练习题

本文深入探讨了JavaScript中var和let的区别,包括它们的作用域、变量提升和暂时性死区。通过实例代码解析,展示了var在全局和块级作用域的行为,以及let如何避免变量提升并产生暂时性死区。同时,文章还涵盖了模板字符串、解构赋值、函数作用域等JavaScript核心概念,并通过具体代码分析了它们的执行结果。
摘要由CSDN通过智能技术生成

1、var和let区别?
Var和let都是声明变量的作用。但是是有区别的,var的声明是在全局变量的声明,let的声明也是let块级作用域:{就是代码块}向上寻找距离该变量最近的开始的{ 作用范围就是该{}之内。
Let没有变量提升的概念;
let有暂时性死区:在一个代码块内,如果有某个变量,会绑定该区域,不再受外界的影响

2、分析代码执行结果?
var a=123;
if(true){
a=‘zsh’;
let a;
}

答:代码会报错
Var a 是在全局变量上进行声明的,因此if判断语句是可以使用var a=123 这个赋值的变量的,在if判断语句内,由于let没有变量提升,所以按照顺序执行代码,a=”zsh”,到了let a由于这个a已经被声明过了let不支持重复声明,所以会报错。

3、补全代码
var person={
name:‘zs’,
age:12
}
let str=;
结果呈现:用户的姓名为 ,年龄是
result.innerHTML=str;

答:用户的姓名为${person.name},年龄是${person.age}

4、将下面字符串改用模板字符串实现?
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲result").append…("#result").append(
He is <b>${person.name}</b> and we wish to know his ${person.age}.That is all )

5、下面程序输出的结果是?
let object = { first: ‘Bill’, lasts: ‘Gates’ };
let { first: firstName, last: lastName } = object;
console.log(firstName+’\t’+lastName);

答:Bill undefined

6、下列程序执行f()函数运行的结果是?
var tmp = new Date();
function f(){
console.log(tmp);
if (false){
var tmp = “hello world”;
}
}
f()

Undefined,
在if语句中var声明的tmp也受到变量提升的影响但是由于if判断语句是false,不执行赋值’hello,world’

7、对比以下两道程序输出的值相同吗?
//A程序:
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a8; //8
a9; //9

变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是8,9。

//B程序
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a8; //10
a9; //10
变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 10

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值