预解析:
会预先解析一些(变量定义、函数会预解析);
var a=12;
只把var a提到作用域的顶部
js会把变量的声明(仅仅是声明)提到顶部。不会突破作用域
执行步骤:,
读取一个script标签>预解析>执行里面的代码>
读取下一个script标签>预解析>执行里面的代码
不会突破script标签
undefined和not defined
undefined存在没有赋值
not defined 没定义 直接用
预解析作用范围:
会找本作用域之内(函数、script)
函数也有预解析,但是要注意:
当以变量的形式声明的函数,预解析会按照变量的特性走
引用:
对象才有引用 基本类型没有
什么叫有引用 ?他们指的是同一个东西;
引用: 共同是一个东西:object
只有在对象身上才会发生
为什么会它有引用 因为对象比较大 不能每次都用新东西 性能浪费
数组的真正写法:
new Array();
函数的真正写法:
new Function(); //不推荐
异常:
try...catch
报错的时候,后面的程序不执行。
bug异常 程序员不可控制的错误
try...catch
try 尝试着去执行一段代码。
如果没有做错。就正常执行。
如果有错,找catch
try{
可能会出错的代码
}catch(e){
补救代码
}
e 包含着错误信息
JS中所有全局都是window的
window的作用:在封闭空间中声明一个全局的变量
全局变量和函数都属于window
严格模式
'use strict'
严格模式的好处:
1.解决了局部函数中this是window的bug.
2.解决了不加var声明变量的bug.
3.避免在if,switch,for,while,for in里面定义函数
(不允许在非函数的代码块内声明函数)
4.去掉了with