in:in:"num"in window,
判斷num是否為window這個物件的乙個屬性,是的話返回true,不是的話返回false
var obj=
;console.
log(
"name"
in obj)
;>>
true
console.
log(
"eat"
in obj)
;>>
false
1、預解釋的時候,不管條件是否成立,都要把帶var的進行提前的宣告
window的預解釋:var num;
–>window.num;
案例一if(
!("num"
in window)
)console.
log(num)
;>>undefibed
2、預解釋的時候只預解釋「=」左邊的,右邊的是值,不參與預解釋普通表示式:宣告+定義,一般不會報錯
案例二fn(
);>>
"ok"
functionfn(
)fn()
;>>
"ok"
匿名函式之函式表示式:把函式的定義部分當作乙個值賦值給我們的變數元素的某一事件
window下的預解釋:var fn;
fn()
;>>
undefibed()
>>報錯》typeerror:fn is not a function
varfn()
=function()
;>>一般做專案推薦匿名函式表示式,因為**只能放在var的下面,比較容易找錯
3、自執行函式:
定義和執行一起完成了
自執行函式定義的那個function在全域性作用域下不進行預解釋,當**執行到這個位置的時候定義和執行就完成了
自執行函式的資料型別:
a.function
(num)
(100);
>>報錯b.(
function
(num)(
100));
c.~function
(num)
(100);
d.+function
(num)
(100);
e.-function
(num)
(100);
f.!function
(num)
(100
);
4、函式體中,return後面的**雖然不執行了,但是需要進行預解釋,return後面跟著的是外面要返回的值,所以不進行預解釋一般情況下return 後面的**不會執行
案例三
functionfn(
);var num =
100;}fn
();
5、如果在預解釋的時候,如果名字已經宣告過了,不需要重新的宣告,但是需要重新的賦值在js中,如果變數的名字和函式的名字重複了,也算衝突
案例四
預解釋:
var fn;window.fn;
fn=***fff000;window.fn=***fff000
var fn=13;
functionfn(
)
案例四拓展
window 預解釋:
functionfn(
);>>>宣告+定義 fn=***fff111
var fn=10;
>>>宣告 var fn(不需要重新宣告)
functionfn(
);>>>宣告(不重複進行)+定義 fn=***fff222
>>>綜上可得:fn=***fff222fn(
);>>
2functionfn(
);fn(
);>>
2var fn=10;
>>fn=
10fn()
;>>10(
)>>報錯:>>error:fn is not a function
,>>後面不進行
functionfn(
);fn(
);
曾經那樣熱烈地計畫過的遠景那樣細緻精密的描好了的藍圖
曾經那樣渴盼著它出現的青春
_卻始終 始終沒有來臨
青春並非人生的一段時光
而是一種心態
青春不是粉頰紅唇和體魄健壯
而是一種意志的力量
_富於想象的特質和情感的活力
_end
預解析機制
js在預解析階段先找所有宣告,如果是var 先給var後的變數定乙個undefind 如果是function 就把function當做字元創賦給函式名 如果名字形同的情況function會把覆蓋var 後面function會覆蓋前面function 1.定義 預解析 在當前作用域下,js執行之前,會...
JS 之 預解釋
1 js中的記憶體空間分為兩種 棧記憶體 堆記憶體 棧記憶體 提供js 執行的環境 儲存基本資料型別的值 全域性作用域或私有作用域都是棧記憶體。堆記憶體 儲存引用資料型別的值 物件是把屬性名和屬性值儲存進去 函式是把函式體中的 當做字串儲存進去。2 當瀏覽器載入html頁面的時候,首先會提供乙個供j...
1 3 預解釋是一種毫無節操的機制
預解釋是毫無節操的一種機制,自從學了預解釋,從此節操是路人 1.預解釋的時候,不管你的條件是否成立,都要把帶var的進行提前的宣告 window的預解釋 var num window.num num in window 判斷num是否為window這個物件的乙個屬性,是的話,返回true,不是的話返...