@2890594972
2017-10-18T04:03:14.000000Z
字数 1235
阅读 780
ES6
//var 声明变量
var var_a = 10;
var var_a = 100;
console.log(var_a);//100
//let 声明变量
let let_a = 10;
let let_a = 100;
console.log(let_a);//VM159:2 Uncaught SyntaxError: Identifier 'let_a' has already been declared
var声明的变量,能重复声明吗? 答:能 let声明的变量,能重复声明吗? 答:不能
if(false){
var var_a = 100;
}
console.log(var_a)//undefined
if(true){
var var_a = 100;
}
console.log(var_a)//100
let和var的区别3:是否支持块级作用域
比如:if,for
if(false){
let let_a = 100;
}
console.log(let_a)//VM161:4 Uncaught ReferenceError: let_a is not defined
if(true){
let let_a = 100;
}
console.log(let_a)//Uncaught ReferenceError: let_a is not defined
是否支持函数级作用域
答案:都支持
function demo(){
var v_width = 100;
let l_width = 200;
}
//console.log(v_width);
console.log(l_width);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<ul>
<li>aa</li>
<li>bb</li>
<li>cc</li>
<li>dd</li>
<li>ee</li>
</ul>
<script>
var lis = document.querySelectorAll('li');
// for(let i=0; i< lis.length; i++){
// lis[i].onclick = function(){
// console.log(i)
// }
// }
for(var i=0; i< lis.length; i++){
//闭包
lis[i].onclick = (function(i){
return function(){
console.log(i)
}
})(i)
}
</script>
</body>
</html>