作业题-1

本文详细介绍了JavaScript中var和let的区别,包括变量提升、重复声明、作用域以及暂时性死区的概念。通过实例分析了let在for循环中的独特应用,展示了块级作用域如何影响变量的访问。同时,文章还探讨了模板字符串的使用,以及在对象解构和函数执行中的变量作用域问题。通过对这些概念的理解,有助于深入掌握JavaScript中的变量管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var和let区别?

1、var 有变量提升 let没有
2、var 可以重复声明 let不可以
3、es6之前js中只有函数的作用域和全局作用域,有了let以后就有了块级作用域
4、let 具有暂时性死区的特征 :ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
5、let配合for循环的独特应用=

分析代码执行结果?

var a=123;
if(true){
	a='zsh';
	let a;
}
let 不可以变量提升且如果在一个块级区域内有 let 声明的变量,那么这块区域就会形成一个封闭的作用域,在{}内部,a 是后声明的,所以会报错:Cannot access 'a' before initialization 无法在变量声明之前获取a元素

补全代码

var person={
	name:'zs',
	age:12
}
let str=` 用户的姓名:${person.name}年龄是:${person.age}`

将下面字符串改用模板字符串实现?

$("#result").append(
	"He is <b>"+person.name+"</b>"+"and we wish to 
know his"+person.age+".That is all"  )
修改后:
$("#result").append(
	`He is ${person.name} and we wish to know his ${person.age} .That is all`
	 )

下面程序输出的结果是?

	let object = { first: 'Bill', lasts: 'Gates' };
	let { first: firstName, last: lastName } = object;
	console.log(firstName+'\t'+lastName);
	输出结果为 Bill undefined 因为没有last属性 

下列程序执行f()函数运行的结果是?

var tmp = new Date();
function f(){
  console.log(tmp);
	  if (false){
	    var tmp = "hello world";
	  }
}
f() 
输出结果为 undefined 因为函数内部有局部变量,在有局部变量的情况下,优先使用局部变量,由于声明提前,赋值留在本地的原因,不会报错,但是无法获取tpm的值

对比以下两道程序输出的值相同吗?

	//A程序:
	var a = [];
	for (let i = 0; i < 10; i++) {
	  a[i] = function () {
	    console.log(i);
	  };
	}
	a[8](); 
	a[9](); 
	输出结果:a[8]()的值是8  a[9]()的值是9  

	//B程序
	var a = [];
	for (var i = 0; i < 10; i++) {
	  a[i] = function () {
	    console.log(i);
	  };
	}
	a[8](); 
	a[9](); 
	输出结果:a[8]()的值是10  a[9]()的值是10 
	在for循环中 a[i]无法获取到索引下标,所以只有当遍历完成之后才会执行,当遍历完成之后,i = 10,此时不管下标为几,得到的结果都是10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值