最近接觸到JS的知識(shí)帕翻,在網(wǎng)上搜集了一些前輩們總結(jié)的資料,以供后面學(xué)習(xí)參考萝风。
1嘀掸、javascript語法
a、javascript的變量名规惰、函數(shù)睬塌、運(yùn)算符是區(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的變量是弱類型的,所以變量可以存儲(chǔ)不同類型的值轧飞。如:var test="hello js"; test=123;
d衅鹿、變量名規(guī)則:第一個(gè)字符必須是字母撒踪、下劃線、或者是美無符號(hào)($)
e大渤、變量名的命名規(guī)則
》Camel標(biāo)記法--首字母小寫的制妄,接下來的單詞都以大寫字母開頭
例:var myTestValue; var myResult;
》Pascal標(biāo)記法--首字母是大寫的,接下來的單詞都以大寫字母開頭
例:var MyTestValue; var MyResult;
》匈牙利標(biāo)記法--在以Pascal標(biāo)記法的基礎(chǔ)上泵三,在變量前面添加一個(gè)小寫字母說明該變量的類型耕捞。
例:var iMyTestValue =55; var sMyResult="Hello js";
3、原始值烫幕,引用值(參考http://fehacker.com/2014/12/19/call-by-sharing/提供的講解)
a俺抽、原始值
比如Undefined,Null,Boolean,Number,String。存儲(chǔ)在棧(stack)中的簡(jiǎn)單數(shù)據(jù)段较曼,也就是說磷斧,它們的值直接存儲(chǔ)在變量訪問的位置。這是因?yàn)檫@些原始類型占據(jù)的空間是固定的捷犹,所以可將他們存儲(chǔ)在較小的內(nèi)存區(qū)域 - 棧中弛饭。這樣存儲(chǔ)便于迅速查尋變量的值。
b萍歉、引用值
也就是對(duì)象類型 Object type,比如Object,Array,Function,Date等孩哑。存儲(chǔ)在堆(heap)中的對(duì)象,也就是說翠桦,存儲(chǔ)在變量處的值是一個(gè)指針(point),指向存儲(chǔ)對(duì)象的內(nèi)存地址胳蛮。這是因?yàn)椋阂弥档拇笮?huì)改變销凑,所以不能把它放在棧中,否則會(huì)降低變量查尋的速度仅炊。相反斗幼,放在變量的棧空間中的值是該對(duì)象存儲(chǔ)在堆中的地址抚垄。地址的大小是固定的蜕窿,所以把它存儲(chǔ)在棧中對(duì)變量性能無任何負(fù)面影響。
4呆馁、幾個(gè)重要的原始類型
a桐经、Undefined 類型
此類型只有一個(gè)值即:undefined。當(dāng)聲明變量未初始化時(shí)浙滤,該變量的值為undefined阴挣。
即:var test;alert(test);則輸出undefined。
注意:值undefined并不同于未定義的值纺腊。但是:typeof運(yùn)算符并不真正的區(qū)分這兩種值請(qǐng)關(guān)注以下代碼:
var oTemp;
alert(typeof oTemp); 輸出 “undefined”;
alert(typeof oTemp2); /*沒有任何地方定義oTemp2*/ 輸出"undefined";
但是在沒有定義變量的情況下卻不可以這樣使用:alert(oTemp2 == undefined);//這會(huì)產(chǎn)生一個(gè)錯(cuò)誤:變量未定義
當(dāng)函數(shù)沒有明確返回值畔咧,那么這個(gè)函數(shù)的返回值默認(rèn)為:undefined茎芭。
b、Null類型
Null類型也只有一個(gè)專用值null誓沸,值undefined其實(shí)是從null派生來的梅桩,因此:
alert(null == undefined); //輸出true
此二值雖然相等,但是其含義并不相同拜隧。undefined是聲明了變量宿百,但對(duì)其初始化時(shí)并未給該變量賦值;null則用于表示尚未存在的對(duì)象虹蓄。如果函數(shù)的返回值為對(duì)象犀呼,那么當(dāng)找不著對(duì)象時(shí)則返回的通常是null。
c薇组、Boolean類型
Boolean類型有兩個(gè)值true/false外臂。
在類型轉(zhuǎn)換過程中:空字符串 == false;數(shù)字÷烧汀0==false 宋光;非零數(shù)字和非空字符串== true;
默認(rèn)情況下:"null==true/false"均返回false,"undefined==true/false"也返回false
var oFalseObject = new Boolean(false);
var result =?oFalseObject && true;//此處最終結(jié)果是 true炭菌,因?yàn)榇颂巃nd 操作會(huì)自動(dòng)將oFalseObject對(duì)象轉(zhuǎn)換為true罪佳,而不是取此對(duì)象的值。所以此處返回值是true;
強(qiáng)類型轉(zhuǎn)換時(shí):var b = new Boolean(null); 則b的最終結(jié)果是false; var b = new Boolean(undefined);亦然
5黑低、函數(shù)
函數(shù)是一組隨時(shí)隨地可以運(yùn)行的語句赘艳,由關(guān)鍵字function、一組參數(shù)克握、以及置于括號(hào)內(nèi)的代碼組成的蕾管。
如果函數(shù)未使用return 語句或者使用了空的return;語句那么此函數(shù)的返回值是undefined.
在ECMAScript中函數(shù)是不可以重載的,如果在同一區(qū)域有兩個(gè)函數(shù)使用了相同的名稱菩暗,不會(huì)引發(fā)錯(cuò)誤掰曾,但是當(dāng)代碼執(zhí)行的時(shí)候真正使用的是第二個(gè)函數(shù)。
arguments對(duì)象:代函數(shù)代碼中停团,可以使用特殊對(duì)象旷坦,開發(fā)者不用明確指出此參數(shù)名,就能訪問他們佑稠。arguments便是整個(gè)函數(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