最近接觸到JS的知識,在網(wǎng)上搜集了一些前輩們總結(jié)的資料,以供后面學習參考。
1、javascript語法
a、javascript的變量名、函數(shù)、運算符是區(qū)分大小寫的
b、變量是弱類型的,ECMAScript不像Java,C++。ECMAScript中的變量無特定的類型。定義變量用var。
c、每行結(jié)尾的“;”可以有也可以沒有
d、javascript注釋是"/*js content */"
2、javascript變量
a、javascipt中定義變量是:var test="hello js";(其中var 是 variable的縮寫。)并且給test變量初始值為“hello?js”
b、ECMAjavascipt中定義變量可以不初始化。如:var test;
c、javascipt的變量是弱類型的,所以變量可以存儲不同類型的值。如:var test="hello js"; test=123;
d、變量名規(guī)則:第一個字符必須是字母、下劃線、或者是美無符號($)
e、變量名的命名規(guī)則
》Camel標記法--首字母小寫的,接下來的單詞都以大寫字母開頭
例:var myTestValue; var myResult;
》Pascal標記法--首字母是大寫的,接下來的單詞都以大寫字母開頭
例:var MyTestValue; var MyResult;
》匈牙利標記法--在以Pascal標記法的基礎上,在變量前面添加一個小寫字母說明該變量的類型。
例:var iMyTestValue =55; var sMyResult="Hello js";
3、原始值,引用值(參考http://fehacker.com/2014/12/19/call-by-sharing/提供的講解)
a、原始值
比如Undefined,Null,Boolean,Number,String。存儲在棧(stack)中的簡單數(shù)據(jù)段,也就是說,它們的值直接存儲在變量訪問的位置。這是因為這些原始類型占據(jù)的空間是固定的,所以可將他們存儲在較小的內(nèi)存區(qū)域 - 棧中。這樣存儲便于迅速查尋變量的值。
b、引用值
也就是對象類型 Object type,比如Object,Array,Function,Date等。存儲在堆(heap)中的對象,也就是說,存儲在變量處的值是一個指針(point),指向存儲對象的內(nèi)存地址。這是因為:引用值的大小會改變,所以不能把它放在棧中,否則會降低變量查尋的速度。相反,放在變量的??臻g中的值是該對象存儲在堆中的地址。地址的大小是固定的,所以把它存儲在棧中對變量性能無任何負面影響。
4、幾個重要的原始類型
a、Undefined 類型
此類型只有一個值即:undefined。當聲明變量未初始化時,該變量的值為undefined。
即:var test;alert(test);則輸出undefined。
注意:值undefined并不同于未定義的值。但是:typeof運算符并不真正的區(qū)分這兩種值請關注以下代碼:
var oTemp;
alert(typeof oTemp); 輸出 “undefined”;
alert(typeof oTemp2); /*沒有任何地方定義oTemp2*/ 輸出"undefined";
但是在沒有定義變量的情況下卻不可以這樣使用:alert(oTemp2 == undefined);//這會產(chǎn)生一個錯誤:變量未定義
當函數(shù)沒有明確返回值,那么這個函數(shù)的返回值默認為:undefined。
b、Null類型
Null類型也只有一個專用值null,值undefined其實是從null派生來的,因此:
alert(null == undefined); //輸出true
此二值雖然相等,但是其含義并不相同。undefined是聲明了變量,但對其初始化時并未給該變量賦值;null則用于表示尚未存在的對象。如果函數(shù)的返回值為對象,那么當找不著對象時則返回的通常是null。
c、Boolean類型
Boolean類型有兩個值true/false。
在類型轉(zhuǎn)換過程中:空字符串?。剑健alse;數(shù)字 0==false ;非零數(shù)字和非空字符串== true;
默認情況下:"null==true/false"均返回false,"undefined==true/false"也返回false
var oFalseObject = new Boolean(false);
var result =?oFalseObject && true;//此處最終結(jié)果是 true,因為此處and 操作會自動將oFalseObject對象轉(zhuǎn)換為true,而不是取此對象的值。所以此處返回值是true;
強類型轉(zhuǎn)換時:var b = new Boolean(null); 則b的最終結(jié)果是false; var b = new Boolean(undefined);亦然
5、函數(shù)
函數(shù)是一組隨時隨地可以運行的語句,由關鍵字function、一組參數(shù)、以及置于括號內(nèi)的代碼組成的。
如果函數(shù)未使用return 語句或者使用了空的return;語句那么此函數(shù)的返回值是undefined.
在ECMAScript中函數(shù)是不可以重載的,如果在同一區(qū)域有兩個函數(shù)使用了相同的名稱,不會引發(fā)錯誤,但是當代碼執(zhí)行的時候真正使用的是第二個函數(shù)。
arguments對象:代函數(shù)代碼中,可以使用特殊對象,開發(fā)者不用明確指出此參數(shù)名,就能訪問他們。arguments便是整個函數(shù)的所有參數(shù)列表數(shù)組。
閱讀拓展:
http://www.jb51.net/article/21457.htm
http://www.cnblogs.com/huajs/archive/2011/11/05/2237091.html
http://blog.sina.com.cn/s/blog_6fd4b3c10101dpv2.html
http://www.jb51.net/article/47699.htm