預(yù)解析:
會(huì)預(yù)先解析一些(變量定義、函數(shù)會(huì)預(yù)解析);
var a=12;
只把var a提到作用域的頂部
js會(huì)把變量的聲明(僅僅是聲明)提到頂部。不會(huì)突破作用域
執(zhí)行步驟:,
讀取一個(gè)script標(biāo)簽>預(yù)解析>執(zhí)行里面的代碼>
讀取下一個(gè)script標(biāo)簽>預(yù)解析>執(zhí)行里面的代碼
不會(huì)突破script標(biāo)簽
undefined和not defined
undefined存在沒有賦值
not defined 沒定義 直接用
預(yù)解析作用范圍:
會(huì)找本作用域之內(nèi)(函數(shù)、script)
函數(shù)也有預(yù)解析,但是要注意:
當(dāng)以變量的形式聲明的函數(shù),預(yù)解析會(huì)按照變量的特性走
引用:
對(duì)象才有引用 基本類型沒有
什么叫有引用 萍启?他們指的是同一個(gè)東西;
引用: 共同是一個(gè)東西:object
只有在對(duì)象身上才會(huì)發(fā)生
為什么會(huì)它有引用 因?yàn)閷?duì)象比較大 不能每次都用新東西 性能浪費(fèi)
數(shù)組的真正寫法:
new Array();
函數(shù)的真正寫法:
new Function(); //不推薦
異常:
try...catch
報(bào)錯(cuò)的時(shí)候屏鳍,后面的程序不執(zhí)行勘纯。
bug異常 程序員不可控制的錯(cuò)誤
try...catch
try 嘗試著去執(zhí)行一段代碼。
如果沒有做錯(cuò)钓瞭。就正常執(zhí)行驳遵。
如果有錯(cuò),找catch
try{
可能會(huì)出錯(cuò)的代碼
}catch(e){
補(bǔ)救代碼
}
e 包含著錯(cuò)誤信息
JS中所有全局都是window的
window的作用:在封閉空間中聲明一個(gè)全局的變量
全局變量和函數(shù)都屬于window
嚴(yán)格模式
'use strict'
嚴(yán)格模式的好處:
1.解決了局部函數(shù)中this是window的bug.
2.解決了不加var聲明變量的bug.
3.避免在if山涡,switch堤结,for,while鸭丛,for in里面定義函數(shù)
(不允許在非函數(shù)的代碼塊內(nèi)聲明函數(shù))
4.去掉了with