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