在js中,函式可以分為3中:1)函式宣告 fd(function declare) 2),函式表示式 fe 3) function類。
函式宣告 fd:這種是最常見的。
function foo(){}
函式宣告在進入上下文時就會建立,所以針fd,在**結構上往往可以會出現
var fooresult = foo();
function foo(){}
即呼叫者在foo宣告之前都可以。
fd一般出現在程式主體或者其他函式體中,這種函式的函式名不可省略,因為這個函式名本身就是乙個函式變數。
乙個比較有意思的現象的是,在函式申明的後面(如果有分號;的話,那麼在分號之前),可以插入乙個表示式,而執行正常,比如
function func(){}(1);
function func(){}1;
function func(){}"expression";
...諸如此類,另外,可以值得說明的是,只有函式申明後面可以這麼做,很簡單的乙個測試方法類似下面:
function foo(){}1(1); 會提示 number is not a function.
2) 函式表示式 fe
函式表示式一般的形式為 function [foo](){},即這裡的函式名稱是可有可無,其實宣告了函式名稱,除了在這個函式體中可以引用,其他地方嘗試呼叫都是提示undefine。
fe的乙個優點就是不會「汙染」變數物件,因為其function name是可有可無的,通常使用的更多的是匿名的方式。
函式表示式常用的情況是為變數或者作為引數傳遞,另外一種情況就是用作立即執行的,比如:
(function())();
值得說明的是,這裡的兩個括號,分別是 分組操作符,將乙個函式轉變為函式表示式,後面的括號是呼叫一般function的格式。
3)function類
就是建立function的物件,用於模擬物件導向。
一些小點總結:
1)js裡面,當function中沒有return,或者return後面的表示式為空,再或者返回的是基本型別,[number,string,boolean,] null, undefined,返回的是function物件。
2) instanceof 基本型別的變數的結果都是null
3)number + string 遇到這種表示式都會主動呼叫tostring.
4) number - string 這種表示式會主動將string轉化為number
5)在嘗試轉化為numbe時嘗試呼叫valueof
6) 在嘗試轉化為string時會嘗試呼叫tostring
7)(1,3,4,2) 返回的結果是2,因為括號裡面的內容其實是由逗號,組成的表示式,結果是2
8) === !== 都是不轉換資料型別;而去掉乙個等號(=)後就會嘗試資料型別的轉換
9)函式宣告在進入上下文時已經建立,建立的結果是,函式名稱作為乙個變數物件存在於當前的執行環境中,即該環境中多了乙個以該函式名為名稱的變數
認知天性個人筆記6
心理學家比約克夫婦創造了乙個詞,來描述那些能換來更牢固學習成果 的短期麻煩,即 合意困難 編碼 大腦會把你感知到的東西轉化成化學與生物電形式的變化,這些變化就形成了一種心理表徵。大腦是如何把感官感知到的東西轉化為有意義的心理表徵的,就目前來說,人類還不能完全理解這一過程。我們把這 個過程叫作編碼。鞏...
HTML CSS基礎知識個人筆記 6
2.定位 2.1 靜態定位 static 2.2 相對定位 relative 2.3 絕對定位 absolute 2.4 固定定位 fixed 2.5 絕對定位 特殊固定 和浮動的隱藏模式轉換 2.6 定位z index疊放順序 2.7 經典案例 清除浮動的問題 就是由於子級元素的浮動導致父級元素的...
JavaScript入門指南 6
建構函式 var obj new object obj.name tom obj.age 23 alert obj.name tom alert obj.age 23 物件字面量 var obj obj.name tom obj.age 23 alert obj.name tom alert obj...