预解释就是js在执行代码之前先将 var的变量声明 将function函数定义 这样执行代码 能直接调用
栈内存用来提供js运行的环境
堆内存用来存储引用数据类型的值
window是全局变量也是浏览器对象
function函数存储是将function体内的代码以字符串形式存储 然后再指向函数名
基本数据类型 string number boolean null undefined 五种类型 操作值
引用数据类型 {}对象object []数组 arr //正则 操作内存地址
function
function里中也会先进行预解释
js中 在全局下这么写的话 ==》 var num1 和 num ,var num1不仅是个全局变量也是window的属性
num 仅仅是全局的属性
<script>
var a = 100
function fn(){
console.log(a) ==>10 先进行的是预解释 将var a = 10使局部变量
var a = 10
}
console.log(a) ===> 100 全局
</script>
<script>
var a = 100 全局
function fn(){
console.log(a) ==>100 函数里没有a的局部变量 顺延向上级作用域寻找 找到a
a = 10 这行的a是全局变量 修改了 全局下的a
}
console.log(a) ===> 10
</script>
<script>
function fn(){
console.log(a) ===>报错
a = 10
}
console.log(a) ===> 不执行
</script>