ES6练习一

2020.12.4 07:35

1.var和let区别?

01块级作用域
02不能重复声明
03没有变量提升的概念

2.分析代码执行结果?

var a=123;
if(true){
   a='zsh';
   let a;
}

报错 a在未声明之前不能使用
分析:let会绑定作用域,并且没有变量提升,就是暂时性死区

3.补全代码

var person={
	name:'zs',
	age:12
}
let str=`                         `;
结果呈现:用户的姓名为 ,年龄是
result.innerHTML=str;

解答:

let str=`用户的姓名为${person.name},用户的年龄为${person.age}`;

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

$("#result").append(
	"He is <b>"+person.name+"</b>"+"and we wish to 
know his"+person.age+".That is all"  );

解答:

$("#result").append(`
	He&nbps;is
	<b>${person.name}</b>
	and&nbps;we&nbps;wish&nbps;to&nbps;know&nbps;his${person.age}.That&nbps;is&nbps;all
`);

5.下面程序输出的结果是?

let object = { first: 'Bill', lasts: 'Gates' };
let { first: firstName, last: lastName } = object;
p3.innerHTML=`${firstName+'\t'+lastName}`;

Bill undefined
分析:变量last和属性名lasts不同,取不到值所以是undefined

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

var tmp = new Date();
function f(){
    console.log(tmp);
    if(false){
        var tmp = "hello world";
    }
}
f();

输出结果:undefined
输出的tmpf的作用域内,不受外界的tmp影响,if语句的条件为false,不会执行,但是变量的作用域还是存在,也就是在f{}
相当于

var tmp = new Date();
function f(){
	var tmp
    console.log(tmp);
    if(false){//false,不会执行
        tmp = "hello world";
    }
}
f();

定义了没赋值,undefined
在某一个作用域内,如果存在某一个变量,就会绑定该区域不再受外部影响

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

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

//B程序
var b = [];
for (var i = 0; i < 10; i++) {
    b[i] = function () {
        console.log(i);
    };
}
b[8](); 
b[9](); 

8,9,10,10
分析:

Alet声明i,i只在本轮生效,每次循环i都是一个新的变量
a[0]~a[9]里console(i)的i指向的是10个不同i
a[0]~a[9]里的i的值是0~9

Bvar声明i,只有一个全局变量i,每次循环i的值都会改变
b[0]~b[9]里console(i)的i指向的都是同一个i,即全局变量i
调用时循环已结束,i的值为10,所以b[0]~b[9]里的i的都是10
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页