js作用域与变量,预解析
变量与作用域 基本类型的值不可以修改 引用类型可以 基本类型的值不可以设置属性与方法 引用类型可以 基本类型保存在栈内存中 引用类型在堆内存中 引用类型的地址保存在栈内存中 引用类型作比较时 只有他们的引用地址相同 他们才相等 基本类型的值 在复制的值被修改后 被复制的值不会改变 引用类型则会改变 因为指向同一地址 浅拷贝: 引用类型栈内存中使用同一地址 函数调用传参时 引用类型与基本类型都传的是值 js没有块级作用域 直接访问不存在的变量会报错 比如 console.log(person) 而如果 console.log(window.person) 则会返回 undefined instanceof 查看前面是否是后面的实例 [ ] instanceof Array 基本类型不能使用 预解析 变量提升 预解析首先读取 var 与function定义的变量与函数 将var定义的变量置为 undefined 将函数整个解析 不通过var声明的变量为全局变量 不会被预解析 如果变量与函数同名则忽略变量 同名变量与同名函数则保留后面的 在不同的script标签中的 先预解析先写的script标签 console.log不存在的变量或函数会报错;不存在的属性或方法,返回undefined 不要在if 与for之中定义函数 (有些浏览器无法进行预解析) 部分例题 输出 [4] [4, 44