刷完了udacity上JS的入門課凭迹,純粹為了學習開發(fā)小程序而補的前端知識罚屋。
一開始在SoloLearn上最先接觸的JS,只用了三個小時不到就把證書刷下來了嗅绸,這畢竟是我在SoloLearn的第一個證書脾猛,先炫一下哈!
進入正題鱼鸠,JavaScript起初為了出名特地把名字取得和Java很像猛拴,因為Java一直都很火,Java web, 移動開發(fā)蚀狰,服務器愉昆。當然如果學過java在去學JS得話,就會感覺者這門語言非常得友好麻蹋,沿襲了Java的大部分風格跛溉,這里就說幾點不同吧。
1. 數(shù)據(jù)類型
1.1自動判斷類型扮授。
在傳統(tǒng)的語言里芳室,要定義變量,都要是使用int 刹勃,float , double ,boolean這些關(guān)鍵字堪侯,但是在JS里完全不用。直接使用var關(guān)鍵字荔仁,變量的數(shù)據(jù)類型完全由系統(tǒng)自動判斷伍宦。
#java8,c,c++都要這么寫
int age= 25;
float pi = 3.14;
#聽說Java9也使用var 自動判斷,不過咕晋,本人還是堅守Java8.
而在JS里就可以這么寫:
var name = 'javascript';
var age = 25;
var pi = 3.14;
var message = ['hello', 'nihao'];
//注:JavaScript里single quote 和 double quote 沒有區(qū)別雹拄,本人更加傾向single quote,JS好多地方和python很像。
1.2 字符串拼接
javaScript的字符串自動拼接掌呜,可以在這里把number直接轉(zhuǎn)成字符串滓玖。
注:console.log()是輸出日志,相當于Java的System.out.print()质蕉。
1.3 絕對相等
javascript使用了自動判斷類型势篡,所以使用===表示數(shù)值和數(shù)據(jù)類型都相等翩肌,而==僅僅表示數(shù)值相等。
2.真假值
在JavaScript里禁悠,視為真值的有non-zero number, non-empty string, object, array, true念祭。
在JavaScript里,視為假值的有null, undefined, 0, empty string, NaN, fasle碍侦。
三元運算符是從c語言一直沿襲下來的粱坤,Java也有。不過沒怎么常用瓷产。
3.函數(shù)
JavaScript里函數(shù)使用function()關(guān)鍵字站玄。
3.1 返回與日志(輸出與返回)
3.2 作用域
3.3 提升
1.JavaScript 會將函數(shù)聲明和變量聲明提升到當前作用域的頂部。
2.變量賦值不會提升濒旦。
3.在腳本的頂部聲明函數(shù)和變量株旷,這樣語法和行為就會相互保持一致。
3.4 函數(shù)表達式
匿名函數(shù)尔邓,有點類似lambda表達式晾剖。可以把函數(shù)儲存在變量中梯嗽。
所有函數(shù)聲明提升和加載后齿尽,腳本才會實際地運行。函數(shù)表達式不會提升慷荔,因為它們涉及變量賦值雕什,只有變量聲明會提升。在解析器在腳本中到達該表達式之前显晶,函數(shù)表達式不會加載贷岸。
3.4.1 回調(diào)
3.4.2 有名稱的函數(shù)表達式
3.4.3 內(nèi)嵌函數(shù)表達式
這種內(nèi)嵌函數(shù)表達式,在python中稱之為把函數(shù)視為一等對象磷雇。
函數(shù)表達式偿警,將函數(shù)內(nèi)嵌傳遞給其他函數(shù)的語法在 JavaScript 中很常見
4.array
JavaScript的array感覺更像是python的list,用了這么久唯笙,感覺都是一樣的螟蒸。
array loop
傳統(tǒng)的遍歷array。
forEach()更像是一種迭代崩掘。
map()返回一個新的array
5.對象
5.1 typeof
既然是自動判斷類型的語言七嫌,就必然要有用來判斷變量類型的函數(shù)。在python里是type()苞慢,在JavaScript里是typeof()诵原。
5.2 創(chuàng)建對象
第一次看到這個時候感覺想c語言的結(jié)構(gòu)體,但是后來想了想,感覺Javascript的對象更像散列函數(shù)绍赛。