复习js的数据类型
基本数据类型
- [ ] number
- [ ] string
- [ ] boolean
- [ ] null
- [ ] undefined
引用数据类型
- [ ] object
- {}
- []
- /^/
- Date
- ……
- [ ] function
预解释的基本概念
1、当浏览器加载HTML页面时,先提供一个供全局js执行的环境–>全局作用域(global/window)
window在js中的身份
- [ ] 全局作用域
- [ ] 浏览器对象
2、预解释
当前作用域下,代码执行前,浏览器默认把:
- [ ]
var
: 提前声明 - [ ]
function
: 提前生命和定义
3、js中内存的分类
- [ ]
栈内存
:供js代码执行的环境–>作用域(全局或私有) - [ ]
堆内存
:存储引用类型的值
图16
预解释在函数中的不规则使用
[x] 预解释时不管条件是否成立,都声明带var
12345//window的预解释:var num; ->window.num;(在执行代码前num已经存在在window中了)if(!("num" in window)){ // "num" in window ->truevar num=12;}console.log(num); //undefined[x] 预解释: 预解释左面
=
右面不参与预解释12fn(); //-->出错(not a function)var fn=function(){ …… }
|
|
- [x] 自执行函数:定义和执行一起完成;
(全局作用域下不进行预解释)
12( function(num){} ) (100) ; //常用~ function(num){} (100) ; //符号只是使得语法符合[x] return 后面的不预解释和下面的预解释
12345678function fn(){console.log(num);//-->undefinedreturn function(){//return后面跟着的是返回的值,所以不进行预解释};var num=100; // return下的不再执行,但是函数fn的作用域下需要预解释}fn();[x] 在预解释时,不再声明已经声明过的名字,但会重新赋值;
- (js中变量和函数的名字重复,会冲突报错)
- [ ] 预解释过程:
- 1、声明+定义:fn=###11111(地址1);
- 2、声明var(不需要再声明);
- 3、声明+定义:fn=###22222(地址2);(不再声明只定义)
- [ ] 执行过程:1234567fn(); //--> 22222function fn(){console.log(11111);};fn(); //--> 22222var fn=10; //-->fn=10fn(); //-->10() (fn is not a function)function fn(){console.log(22222);};//总共执行2次fn();