@2890594972
2017-10-18T04:03:14.000000Z
字数 1235
阅读 853
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)//undefinedif(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 definedif(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>
