/*
* 變量的作用域:
* 局部變量:定義在函數體內或者代碼塊的內部,參數是局部變量
* 全局變量:定義在最外的函數體爲,在代碼的任何地方都可以訪問的到,
* 沒有帶關鍵字var的也是全局變量
* 訪問規則:子函數可以訪問父函數的變量,父函數不可以訪問子函數的變量
*/
//在函數體內聲明的變量,在函數體外的沒法訪問的,這個變量的作用域就只是在這個函數體內
//兩個不同的函數體內,同名的變量是互相獨立,互不影響的
//內部函數可以訪問外部函數的變量,但是外部函數沒有辦法訪問內部函數的變量
/*
* 如果在嵌套函數中,出現變量名重名的情況,js的函數在查找變量的時候,由內向外去查找
* 如果重名,內部函數的變量將屏蔽外部函數的變量
*/
/*
* 函數類型的檢測
* typeof 和 instanceof
* typeof 返回類 類型爲function類型,就是函數
* instanceof:識別正在處理的對象的類型,是類型檢測,返回true,不是返回false
*/
var fun = function(){}
var obj = {};
var arr = [];
var n_null = null;
console.log(typeof fun);//functions
console.log(typeof obj);//object
console.log(typeof arr);//object
console.log(typeof n_null);//object
/*
* typeof可以檢測除了null以外的所有基本數據類型,可以檢測function,
* 數據,對象,null返回的都是object
*/
console.log(fun instanceof Function);//true
console.log(obj instanceof Object);//true
console.log(arr instanceof Array);//true
console.log(n_null instanceof Object);//
/*
* typeof和instanceof的區別:
* typeof是用來判斷參數是什麼類型的,返回值是用來說明參數類型的字符串
* 返回值的結果可以是"number","string","boolean","undefined","object","function"
* 其中引用數據類型(對象和數組)和null類型,返回的都是object,所以使用typeof來判斷參數的類型有侷限性
*
* instanceof是用來判斷一個對象在其原型鏈中是否存在一個構造函數的prototype屬性。
* a instanceof b 就是判斷a是否爲b的實例,是返回true,不是返回false
*/
函數的作用域&類型檢測
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.