作用域是代码的影响范围,函数的内部有属于自己的作用域。
var n = 1
console.log(n) // 1
;(function() {
n = 2
})()
console.log(n) // 1 | 没有被函数影响
所有作用域下都能共享都变量。
/*
var n = 1 // 局部变量
n = 1 // 全局变量
浏览器中的 JavaScript,当变量没有指定前缀就是全局变量
因为,n = 1 和 window.n = 1 相等,window 在浏览器中是全局对象
而 Node.js 全局变量和一般语言一样,用的是 global 语法
*/
n = 1
console.log(n) // 1
;(function() {
n = 2
})()
console.log(n) // 2 | 成功改变了 n 的值
ES6 新增的变量关键词,和 var
最大的区别是 let
具备块级作用域
。
// 每一个 {} 就是一段代码块
// let
for (let i=0; i<5; i++){
// ...
}
console.log(i) // 读取不到,而如果使用的是 var 这里可以就读取得到
ES6 新增的常量
关键字,和 let 一样具备块级作用域。
const page = 10
page = 5 // 常量,定义量就不能修改,否则报错
严格模式
'use strict' // 文件开头声明,启用严格模式
/*
严格模式会对不规范的代码进行报错,建议开启,养成代码规范的好习惯!
*/