1.js中的數(shù)據(jù)類型
1.基本數(shù)據(jù)類型:number、string、boolean、null、undefined。
var num = 12;
2.引用數(shù)據(jù)類型
object: {}、[]、/^s/、Date var obj = {name: "珠峰培訓(xùn)", age: 7}
function fn(){ console.log('勿忘初心方得始終')}
console.log(fn);//->把整個(gè)函數(shù)的定義部分(函數(shù)本身)在控制臺(tái)輸出
console.log(fn());//->把當(dāng)前函數(shù)執(zhí)行的返回結(jié)果
(return后面寫的是啥,返回值就是啥,如果沒(méi)有return,默認(rèn)返回值是undefined)
1.png
3.JS中內(nèi)存的分類
棧內(nèi)存:用來(lái)提供一個(gè)供JS代碼執(zhí)行的環(huán)境.->作用域(全局作用域/私有的作用域)
堆內(nèi)存:用來(lái)存儲(chǔ)引用數(shù)據(jù)類型的值 ->對(duì)象存儲(chǔ)的是屬性名和屬性值,函數(shù)存儲(chǔ)的是代碼字符串。
總結(jié)
1.當(dāng)瀏覽器加載HTML頁(yè)面的時(shí)候,首先會(huì)提供一個(gè)供全局JS代碼執(zhí)行的環(huán)境->全局作用域(global/window)。
2.預(yù)解釋(變量提升)
在當(dāng)前的作用域中,JS代碼執(zhí)行之前,瀏覽器首先會(huì)默認(rèn)的把所有帶var和function的進(jìn)行提前的聲明或者定義
(1).理解聲明和定義
var num = 12;
聲明(declare):var num;->告訴瀏覽器在全局作用域中有一個(gè)num的變量了。->如果一個(gè)變量只是聲明了但是沒(méi)有賦值,默認(rèn)的值是undefined。
定義(defined):num = 12; ->給我們的變量進(jìn)行賦值。
(2).對(duì)于帶var和function關(guān)鍵字的在預(yù)解釋的時(shí)候操作還是不一樣的
var: ->在預(yù)解釋的時(shí)候只是提前的聲明
function: ->在預(yù)解釋的時(shí)候提前的聲明+定義都完成了。
(3).預(yù)解釋只發(fā)生在當(dāng)前的作用域下,例如:開(kāi)始只對(duì)window下的進(jìn)行預(yù)解釋,只有函數(shù)執(zhí)行的時(shí)候才會(huì)對(duì)函數(shù)中的進(jìn)行預(yù)解釋。
console.log(num); //->undefined
var num = 12;
console.log(num);//->12
var obj = {name: "珠峰培訓(xùn)", age: 7};
fn(100,233);//->300
function fn(num1, num2) {
var total = num1 + num2;
console.log(total);
}
屏幕快照 2018-11-27 下午10.23.23.png