作用域是代码的影响范围,函数的内部有属于自己的作用域。
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' // 文件开头声明,启用严格模式
/*
严格模式会对不规范的代码进行报错,建议开启,养成代码规范的好习惯!
*/
JavaScript 数据类型
JavaScript 数字
JavaScript 字符串
JavaScript 数组
JavaScript 对象
JavaScript Map
JavaScript Set
JavaScript null
JavaScript undefined
JavaScript 类型检测
JavaScript 包装对象
JavaScript 函数
JavaScript 参数
JavaScript 匿名函数
JavaScript 箭头函数
JavaScript 递归
JavaScript 闭包
JavaScript 生成器
JavaScript 异步
JavaScript setTimeout
JavaScript setInterval
JavaScript 回调
JavaScript Promise
JavaScript async await