ES5与ES6的小差异
变量的定义
ES6与ES5的区别
ES5:
<script>
console.log(username); var username; var username = 'longda'; console.log(username); </script>
打印结果:
分析上边的代码,发现第一个console.log()居然打印出了undefined,可是在这个之前并没有声明username这个变量.之所以会出现这种情况的原因是ES5的一个特性,这种情况被称为变量提升.
ES6:
<script> console.log(username); let username = 'LongDa'; </script>
代码执行结果:
分析上边的结果,ES6中使用let声明变量,在声明之前打印,结果将会报错.也就说明ES6不存在变量提升这种特性.
var和let定义的变量的区别
var定义的变量:
只有全局作用域和函数作用域.
let定义的变量:
有全局作用域和函数作用域、块级作用域。
<script> if (true) { var username = 'longda'; let age = 18; } console.log(username); console.log(age); </script>
执行结果:
分析打印结果,由于let拥有块级作用域,而通常一个大括号({})就理解为一个作用域,打印age是在块级作用域外打印的,所以会报错显示变量未定义。
let不能重复定义变量。
<script> var username = 'longda'; var username = 'xiaomo'; console.log(username); </script>
打印结果如下:
分析打印结果,var可以重复定义变量。
<script>
var username = 'longda';
let username = 'xiaoxiaomo'; console.log(username);
</script>
打印结果如下:
分析打印结果,提示username这个变量已经存在,所以说let不能重复定义变量。
模板字符串
<body> <div id="app"></div> <script> let oDiv = document.getElementById('app'