深入学习js做下笔记,以便日后查用,都是理论知识
1.预解释
- 基本数据类型(按值访问,操作的是他们实际保存的值) number string boolean null undefined
- 引用数据类型(按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再顺藤摸瓜地找到保存在堆内存中的值) object:{}
var num = 10;
var obj = {name:'zhang',age:'7'}
function fn(){
console.log('短剑在闲逛')
}
console.log(fn);//把函数定义的部分(函数本身)在控制台输出
console.log(fn());//返回当前函数的返回结果
- 在浏览器加载html页面的时候,首先会提供一个供全局js代码执行的环境----->全局作用域(global/window)
- 预解释:在当前的作用域中,在js执行之前,浏览器首先会默认的把所有带var和function 的进行提前的声明和定义
2.1.理解声明和定义
- 声明(declare):var num;—>告诉浏览器在全局的作用域中有一个num的变量了,如果一个变量只是声明了但是没有赋值,默认的值是undefined
- 定义(defined):num=12; ----> 给我们的变量进行赋值
2.2.var与function预解释的区别
- var:在预解释的时候只是提前的声明
- funciton:在预解释的时候提前的声明+定义都完成了
3. js的内存分类
- 栈内存:用来提供一个供js代码执行的环境—>作用域(全局作用域、私有)
- 堆内存:用来存储引用数据类型的值—>对象存储的是属性名和属性值。函数存储代码字符串