摘要:語(yǔ)法部分屬性默認(rèn)的就是,所以不必顯式指定為。不強(qiáng)制在每個(gè)語(yǔ)句結(jié)尾加,會(huì)自動(dòng)加分號(hào),但是在某些情況下會(huì)改變程序的語(yǔ)義,所以最好主動(dòng)加。實(shí)際上,默認(rèn)有一個(gè)全局對(duì)象。
語(yǔ)法部分:
1.type 屬性: 默認(rèn)的 type 就是 javascript, 所以不必顯式指定 type 為 javascript。
2.javascript 不強(qiáng)制在每個(gè)語(yǔ)句結(jié)尾加 “;” , javascript 會(huì)自動(dòng)加分號(hào), 但是在某些情況下會(huì)改變程序的語(yǔ)義, 所以最好主動(dòng)加 “;”。
3.兩個(gè)相等運(yùn)算符比較
‘==’ 相等( 值相等 ), 它會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類型再比較, 很多時(shí)候會(huì)得到非常詭異的結(jié)果
‘===’ 嚴(yán)格相等( 數(shù)據(jù)類型和值都相等 ) , 它不會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類型, 如果數(shù)據(jù)類型不一致, 返回false, 如果一致, 再比較
4.NaN 與所有其他值都不相等, 包括它自己:
NaN === NaN; // false
唯一能判斷 NaN 的方法是通過 isNaN() 函數(shù)
isNaN(NaN); // true
5.浮點(diǎn)數(shù)比較
浮點(diǎn)數(shù)在運(yùn)算過程中會(huì)產(chǎn)生誤差, 因?yàn)橛?jì)算機(jī)無法精確表示無限循環(huán)小數(shù)。 要比較兩個(gè)浮點(diǎn)數(shù)是否相等, 只能計(jì)算它們之差的絕對(duì)值, 看是否小于某個(gè)閾值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
6.null 和 undefined
大多數(shù)情況下,我們都應(yīng)該用 null , undefined 僅僅在判斷函數(shù)參數(shù)是否傳遞的情況下有用
7.出于代碼的可讀性考慮,創(chuàng)建數(shù)組建議使用 "[ ]",而不使用 "new Array";
8.如果一個(gè)變量沒有通過 "var" 聲明就被使用,那么該變量就自動(dòng)被聲明為全局變量。使用 var 聲明的變量則不是全局變量,它的范圍就該被限制在該變量被聲明的函數(shù)體內(nèi)
9.啟用 strict 模式(強(qiáng)制通過 var 聲明變量)
10.多行字符串用反引號(hào)表示
11.使用模版字符串
12.要獲取字符串某個(gè)指定位置的字符,使用類似 Array 的下標(biāo)操作, 索引號(hào)從 0 開始。 字符串是不可變的, 如果對(duì)字符串的某個(gè)索引賦值, 不會(huì)有任何錯(cuò)誤,但是也沒有任何效果
13.直接給 Array 的 length 賦一個(gè)新的值會(huì)導(dǎo)致 Array 大小的變化
14.如果通過索引賦值時(shí), 索引超過了范圍, 同樣會(huì)引起 Array 大小的變化, 但是不會(huì)有任何錯(cuò)誤, 在編寫代碼時(shí), 不建議直接修改 Array 的大小, 訪問索引時(shí)要確保索引不會(huì)越界
15.數(shù)字 1 和字符串 "1" 是不同的元素
16.slice() 的起止參數(shù)包括開始索引, 不包括結(jié)束索引。
17.如果不給 slice() 傳遞任何參數(shù), 它就會(huì)從頭到尾截取所有元素。 利用這一點(diǎn), 我們可以很容易地復(fù)制一個(gè) Array
18.空數(shù)組繼續(xù) pop 不會(huì)報(bào)錯(cuò),而是返回 undefined
19.concat() 方法并沒有修改當(dāng)前 Array, 而是返回了一個(gè)新的 Array,concat() 方法可以接收任意個(gè)元素和 Array, 并且自動(dòng)把 Array 拆開, 然后全部添加到新的 Array 里
20.javascript 對(duì)象屬性名必須是一個(gè)有效的變量名。 如果屬性名包含特殊字符, 就必須用 "" 括起來
21.如果我們要檢測(cè) xiaoming 是否擁有某一屬性, 可以用in操作符, 不過要小心, 如果 in 判斷一個(gè)屬性存在, 這個(gè)屬性不一定是xiaoming 的, 它可能是 xiaoming 繼承得到的
22.要判斷一個(gè)屬性是否是 xiaoming 自身?yè)碛械模皇抢^承得到的,可以用 hasOwnProperty() 方法
23.JavaScript把 null、undefined、0、NaN 和空字符串 "" 視為 false,其他值一概視為 true
24.由于 Array 也是對(duì)象, 而它的每個(gè)元素的索引被視為對(duì)象的屬性, 因此, for ... in 循環(huán)可以直接循環(huán)出 Array 的索引
25.for ... in 循環(huán)由于歷史遺留問題, 它遍歷的實(shí)際上是對(duì)象的屬性名稱, for ... of` 循環(huán)則完全修復(fù)了這些問題, 它只循環(huán)集合本身的元素
1.函數(shù)如果沒有 return 語(yǔ)句, 函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果, 只是結(jié)果為 undefined
2.由于 JavaScript 允許傳入任意個(gè)參數(shù)而不影響調(diào)用, 因此傳入的參數(shù)比定義的參數(shù)多也沒有問題, 雖然函數(shù)內(nèi)部并不需要這些參數(shù), 傳入的參數(shù)比定義的少也沒有問題
3.關(guān)鍵字 arguments 類似 Array 但它不是一個(gè) Array
4.不在任何函數(shù)內(nèi)定義的變量就具有全局作用域。 實(shí)際上, JavaScript 默認(rèn)有一個(gè)全局對(duì)象 window。 以變量方式 var foo = function () {} 定義的函數(shù)實(shí)際上也是一個(gè)全局變量。
5.用 var that = this; , 你就可以放心地在方法內(nèi)部定義其他函數(shù),而不是把所有語(yǔ)句都堆到一個(gè)方法中。 對(duì)于普通函數(shù)調(diào)用, 通常把 this 綁定為 null。
6.apply() 與 call()的唯一區(qū)別
apply() 把參數(shù)打包成 Array 再傳入;
call() 把參數(shù)按順序傳入。
7.所有實(shí)例的原型引用的是函數(shù)的 prototype 屬性
8.箭頭函數(shù)內(nèi)部的 this 是詞法作用域( 寫代碼或者定義時(shí)確定的 作用域,動(dòng)態(tài)作用域是在運(yùn)行時(shí)確定 ),由上下文確定。箭頭函數(shù)完全修復(fù)了 this 的指向,this 總是指向詞法作用域
1.如果我們?cè)谑褂?Number、Boolean 和 String 時(shí), 沒有寫 new ,Number()、Boolean() 和 String() 被當(dāng)做普通函數(shù),把任何類型的數(shù)據(jù)轉(zhuǎn)換為 number、boolean 和 string 類型(注意不是其包裝類型)
2.不要使用 new Number()、new Boolean()、new String() 創(chuàng)建包裝對(duì)象;
3.用 parseInt() 或 parseFloat() 來轉(zhuǎn)換任意類型到 number;
4.用 String() 來轉(zhuǎn)換任意類型到 string ,或者直接調(diào)用某個(gè)對(duì)象的 toString() 方法;
5.通常不必把任意類型轉(zhuǎn)換為 boolean 再判斷,因?yàn)榭梢灾苯訉?if (myVar) {...} ;
6.typeof 操作符可以判斷出 number 、boolean、string、function 和 undefined ;
7.判斷 Array 要使用 Array.isArray(arr);
8.判斷 null 請(qǐng)使用 myVar === null;
9.判斷某個(gè)全局變量是否存在用 typeof window.myVar === "undefined";
10.函數(shù)內(nèi)部判斷某個(gè)變量是否存在用 typeof myVar === "undefined"。
11.任何對(duì)象都有 toString() 方法嗎? null 和 undefined 就沒有!
12.number 對(duì)象調(diào)用 toString() 報(bào) SyntaxError
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/92468.html
摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完...
摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完...
摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完...
摘要:代碼示例語(yǔ)法和方法類似,不同的是,傳入調(diào)用函數(shù)的參數(shù)變成以數(shù)組的形式傳入,即改造上面的示例就是方法用于將函數(shù)體內(nèi)的綁定到某個(gè)對(duì)象,然后返回一個(gè)新函數(shù)。類型包裝對(duì)象數(shù)值字符串布爾值在一定條件下,也會(huì)自動(dòng)轉(zhuǎn)為對(duì)象,也就是原始類型的包裝對(duì)象。 現(xiàn)在的前端框架層出不窮,3個(gè)月就要重新入門一次前端的現(xiàn)狀,讓我們來不及學(xué)好基礎(chǔ)就開始上手框架。常常就因?yàn)檫@樣,我們會(huì)很快到達(dá)基礎(chǔ)基礎(chǔ)技術(shù)瓶頸,基礎(chǔ)是所...
閱讀 1408·2023-04-26 03:04
閱讀 2356·2019-08-30 15:44
閱讀 3733·2019-08-30 14:15
閱讀 3532·2019-08-27 10:56
閱讀 2752·2019-08-26 13:53
閱讀 2621·2019-08-26 13:26
閱讀 3086·2019-08-26 12:11
閱讀 3615·2019-08-23 18:21