1. let和var声明变量时的区别:
- 使用let声明的变量在块级作用域内有效,而var声明的变量在整个函数作用域内有效。
2. 声明变量后未赋值的情况:
- 使用let声明的变量如果未赋值,访问时会得到undefined值;而var声明的变量如果未赋值,访问时会得到一个全局的window对象的属性,可能导致全局变量污染。
3. 未声明变量的情况:
- 使用let或var声明之前直接使用变量,let会抛出一个引用错误,而var不会抛出错误,但会得到undefined值。
4. 重复声明同一个变量的情况:
- 使用let重复声明同一个变量,会覆盖之前的声明;而var重复声明同一个变量,不会覆盖之前的声明,而是创建一个新的变量。
5. 变量作用范围的情况:
- let声明的变量仅在块级作用域内有效,块级作用域内部声明的变量外部无法访问;var声明的变量在函数作用域内有效,如果是在全局作用域内声明,则可以在全局任何地方访问。