摘要:十進(jìn)制八進(jìn)制八進(jìn)制字面值的第一位必須是零,然后是數(shù)字序列。通常與方法的返回值相同由于在中是所有對(duì)象的基礎(chǔ),因此所有對(duì)象都具有這些基本的屬性和方法。
1 語(yǔ)法 1.1 區(qū)分大小寫(xiě)
ECMAScript中的一切(變量、函數(shù)名和操作符)都區(qū)分大小寫(xiě)。
1.2 嚴(yán)格模式ECMAScript 5 引入了嚴(yán)格模式(strict mode)的概念。嚴(yán)格模式是為JavaScript定義了一種不同的解析與執(zhí)行模型。
在嚴(yán)格模式下,ECMAScript 3 中的一些不確定的行為將得到處理,而且對(duì)某些不安全的操作也會(huì)拋出錯(cuò)誤。
要在整個(gè)腳本中啟用嚴(yán)格模式,可以再頂部添加如下代碼:
"use strict"
指定函數(shù)在嚴(yán)格模式下執(zhí)行:
function doSomething(){ "use strict"; //函數(shù)體 }2 關(guān)鍵字和保留字
關(guān)鍵字
break、do、instanceof、typeof、case、else、new、var、catch、finally、return、void、continue、for、switch、while、debugger、function、this、with、default、if、throw、delete、in、try
保留字
ECMA-262 第五版非嚴(yán)格模式:class、enum、extends、super、const、export、import
ECMA-262 第五版嚴(yán)格模式增加以下限制:implements、package、public、interface、private、static、let、protected、yield
3 變量ECMAScript的變量是松散類型的,所謂松散類型就是可以用來(lái)保存任何類型的數(shù)據(jù)。換句話說(shuō),每個(gè)變量?jī)H僅是一個(gè)用于保存值得占位符而已。
var message;
像這樣未經(jīng)過(guò)初始化的變量,會(huì)保存一個(gè)特殊的值——undefined
4 數(shù)據(jù)類型給未經(jīng)聲明的變量賦值在嚴(yán)格模式下會(huì)導(dǎo)致拋出PeferenceError錯(cuò)誤
ES 5
5種簡(jiǎn)單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number、String
1種復(fù)雜數(shù)據(jù)類型——Object,Object本質(zhì)上是由一組無(wú)序的名值對(duì)組成的。
4.1 typeof 操作符ES 6 新增一種數(shù)據(jù)類型——符號(hào)對(duì)象(Symbol)
typeof 用來(lái)檢測(cè)給定變量的數(shù)據(jù)類型
4.2 Undefined 類型"undefined"——如果這個(gè)值未定義
"boolean"——如果這個(gè)值是布爾值
"string"——如果這個(gè)值是字符串
"number"——如果這個(gè)值是數(shù)值
"object"——如果這個(gè)值是對(duì)象或null
"function"——如果這個(gè)值是函數(shù)調(diào)用typeof null會(huì)返回"object",因?yàn)樘厥庵祅ull被認(rèn)為是一個(gè)空的對(duì)象引用。
Undefined類型只有一個(gè)值,即特殊的undefined。在使用var聲明變量但未對(duì)其加以初始化時(shí),這個(gè)變量的值就是undefined
var message; console.log(message == undefined); //true
字面量undefined的主要目的是用于比較,為了正式區(qū)分空對(duì)象指針與未經(jīng)初始化的變量
4.3 Null 類型Null類型是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型,這個(gè)特殊的值是null。從邏輯角度來(lái)看,null值表示一個(gè)空對(duì)象指針,而這也正式使用typeof操作符檢測(cè)null值時(shí)會(huì)返回"object"的原因
var car = null; console.log(typeof null); //object
如果定義的變量準(zhǔn)備在將來(lái)用于保存對(duì)象,那么最好將該變量初始化為null而不是其他值。這樣一來(lái),只要直接檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用。
4.4 Boolean 類型實(shí)際上,undefined值是派生自null值得,因此ECMA-262規(guī)定對(duì)他們的相等性測(cè)試要返回true
console.log(null == undefined); //true
Boolean類型只有兩個(gè)字面值:true和false
Boolean類型的字面值true和false是區(qū)分大小寫(xiě)的
可以對(duì)任何數(shù)據(jù)類型的值調(diào)用Boolean()函數(shù),而且總會(huì)返回一個(gè)Boolean值
數(shù)據(jù)類型 | 轉(zhuǎn)換為true的值 | 轉(zhuǎn)換為false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | "" (空字符串) |
Number | 任何非零數(shù)字值 | 0和NaN |
Object | 任何對(duì)象 | null |
Undefined | N/A | undefined |
4.5 Number類型n/a (N/A),是not applicable的縮寫(xiě),意思是"不適用"。
Number類型使用IEEE754格式來(lái)表示整數(shù)和浮點(diǎn)數(shù)值(雙精度值)。為支持各種數(shù)值類型ECMA-262定義了不同的數(shù)值字面量格式。
十進(jìn)制
var intNum == 55;
八進(jìn)制
八進(jìn)制字面值的第一位必須是零(0),然后是數(shù)字序列(0~7)。如果字面值中的數(shù)值超出了范圍,那么_前導(dǎo)零_ 將被忽略,后面的數(shù)值將被當(dāng)做十進(jìn)制十進(jìn)制數(shù)值解析
var octalNum1 = 070; //八進(jìn)制的56 var octalNum2 = 079; //無(wú)效的八進(jìn)制數(shù)值——解析為79 var octalNum3 = 08; //無(wú)效的八進(jìn)制數(shù)值——解析為8
八進(jìn)制字面量在嚴(yán)格模式下是無(wú)效的,會(huì)導(dǎo)致支持該模式的JavaScript引擎拋出錯(cuò)誤。
十六進(jìn)制
十六進(jìn)制字面值的前兩位必須是0x,后跟任何十六進(jìn)制數(shù)字(0~9 及 A~F)。字母A~F可以大寫(xiě),也可以小寫(xiě)
var hexNum1 = 0xA; //十六進(jìn)制的10 var hexNum2 = 0x1f; //十六進(jìn)制的31
在進(jìn)行算數(shù)計(jì)算時(shí),所有以八進(jìn)制和十六進(jìn)制表示的數(shù)值最終都將被轉(zhuǎn)換成十進(jìn)制數(shù)值
4.5.1 浮點(diǎn)數(shù)值保存浮點(diǎn)數(shù)值需要的內(nèi)存空間是保存整數(shù)值得兩倍,如果小數(shù)點(diǎn)后面沒(méi)有跟任何數(shù)字,或者浮點(diǎn)數(shù)值本身表示的就是一個(gè)整數(shù)(如1.0),那么該值將會(huì)被轉(zhuǎn)換成整數(shù)
var floatNum1 = 1; //小數(shù)點(diǎn)后面沒(méi)有數(shù)字——解析為1 var floatNum2 = 10.0; //整數(shù)——解析為10
對(duì)于那些極大或極小的數(shù)值,可以用e表示法(即科學(xué)計(jì)數(shù)法)表示浮點(diǎn)數(shù)值。用e表示法表示的數(shù)值等于e前面的數(shù)值乘以10的指數(shù)次冪。
var floatNum1 = 3.125e7; //等于31250000 var floatNum2 = 3e-7; //等于0.0000003
浮點(diǎn)數(shù)值得最高精度是17位小數(shù),但在進(jìn)行算術(shù)計(jì)算時(shí)其精度遠(yuǎn)遠(yuǎn)不如整數(shù)。例如,0.1加0.2的結(jié)果是0.30000000000000004
4.5.2 數(shù)值范圍由于內(nèi)存的限制,ECMAScript并不能保存世界上所有的數(shù)值。
最小數(shù)值 Number.MIN_VALUE //5e-324
最大數(shù)值 Number.MAX_VALUE //1.7976931348623157e+308
如果某次計(jì)算的結(jié)果得到了一個(gè)超出JavaScript數(shù)值范圍的值,那么這個(gè)值將被自動(dòng)轉(zhuǎn)換成特殊的Infinity值
4.5.3 NaN正無(wú)窮大 Infinity
負(fù)無(wú)窮大 -Infunity
isFinite()函數(shù)可以判斷一個(gè)數(shù)值是否又窮的
NaN,即非數(shù)值(Not a Number),是一個(gè)特殊的數(shù)值,這個(gè)數(shù)值用于本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)
任何涉及NaN的操作(例如NaN/10)都會(huì)返回NaN
NaN與任何值都不相等,包括NaN本身
console.log(NaN == NaN); //false
ECMAScript定義了isNaN()函數(shù),這個(gè)函數(shù)接受一個(gè)參數(shù),該參數(shù)可以是任何類型,而函數(shù)會(huì)幫我們確定這個(gè)函數(shù)是否"不是數(shù)值"
4.5.4 數(shù)值轉(zhuǎn)換isNaN()也適用于對(duì)象,基于對(duì)象調(diào)用isNaN()函數(shù)時(shí),會(huì)先調(diào)用對(duì)象的valueOf()方法,再確定該方法返回的值是否可以轉(zhuǎn)換為數(shù)值。如果不能,則基于這個(gè)返回值再調(diào)用toString()方法,在測(cè)試返回值
Number()、parseInt()、parseFloat()
4.6 String類型 4.6.1 字符字面量String數(shù)據(jù)類型包含一些特殊的字符字面量,也叫轉(zhuǎn)義序列,用于表示非打印字符,或者具有其他用途的字符。
n:換行
t:制表
b:退格
r:回車
f:進(jìn)紙
x_nn_:以十六進(jìn)制代碼_nn_表示的一個(gè)字符(其中_n_為0~F)。例如,x41表示"A"
u_nnnn_:以十六進(jìn)制代碼_nnnn_表示的一個(gè)Unicode字符(其中_n_為0~F)。例如,u03a3表示希臘字符Σ
任何字符串的長(zhǎng)度都可以通過(guò)訪問(wèn)其length屬性取得:
var text = "This is the letter sigma: u03a3."; console.log(text.length); //輸出28
這個(gè)屬性返回的字符數(shù)包括16位字符的數(shù)目。如果字符串中包含雙字節(jié)字符,那么length屬性可能不會(huì)精確地返回字符串中的字符數(shù)目。
4.6.2 字符串的特點(diǎn)ECMAScript中的字符串是不可變的。字符串一旦創(chuàng)建,它們的值就不能改變。要改變某個(gè)變量保存的字符串,首先要銷原來(lái)的字符串,然后再用另一個(gè)包含新值的字符串填充該變量
4.6.3 轉(zhuǎn)換為字符串要把一個(gè)值轉(zhuǎn)換為一個(gè)字符串有兩種方法:
幾乎每個(gè)值都有的toString()方法
null和undefined值沒(méi)有這個(gè)方法
toString()方法接受一個(gè)參數(shù):輸出數(shù)值的基數(shù),toString()可以輸出以二進(jìn)制、八進(jìn)制、十六進(jìn)制,乃至其他任意有效進(jìn)制格式表示的字符串值(默認(rèn)基數(shù)為10)
String()函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串
4.7 Object 類型如果值有toString()方法,則調(diào)用該方法(沒(méi)有參數(shù))并返回相應(yīng)的結(jié)果;
如果值是null,則返回"null";
如果值是undefined,則返回"undefined"。
ECMAScript中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合。對(duì)象可以通過(guò)執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類型的名稱來(lái)創(chuàng)建。
var o = new Object(); //無(wú)傳參時(shí)可以省略括號(hào),但不推薦這么做
Object的每個(gè)實(shí)例都具有下列屬性和方法:
constructor:保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)。對(duì)于前面的例子而言,構(gòu)造函數(shù)(constructor)就是Object()
hasOwnProperty(propertyName):用于檢查給定的屬性在當(dāng)前對(duì)象實(shí)例中(而不是在實(shí)例的原型中)是否存在。其中,作為參數(shù)的屬性名(_propertyName_)必須以字符串形式指定(例如:o.hasOwnProperty("name"))
isPrototypeOf(Object):用于檢查傳入的對(duì)象是否是當(dāng)前對(duì)象的原型
propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語(yǔ)句來(lái)枚舉。與hasOwnProperty()方法一樣,作為參數(shù)的屬性名必須以字符串形式指定
toLocaleString():返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)
toString():返回對(duì)象的字符串表示
valueOf():返回對(duì)象的字符串、數(shù)值或布爾值表示。通常與toString()方法的返回值相同
由于在ECMAScript中Object是所有對(duì)象的基礎(chǔ),因此所有對(duì)象都具有這些基本的屬性和方法。
5 操作符 5.1 一元操作符只能操作一個(gè)值的操作符叫做一元操作符
5.1.1 遞增和遞減操作符執(zhí)行前置遞增和遞減操作符時(shí),變量的值都是在語(yǔ)句被求值以前改變的(在計(jì)算機(jī)領(lǐng)域,這種情況通常被稱作副效應(yīng))
var age = 29; var antherAge = --age + 2; console.log(age); //輸出28 console.log(anotherAge); //輸出30
執(zhí)行后置遞增和遞減操作符時(shí),變量的值都是在語(yǔ)句被求值之后改變的
var num1 = 2; var num2 = 20; var num3 = num1-- + num2; //等于22 var num4 = num1 + num2; //等于21
5.1.2 一元加和減操作符遞增遞減操作符對(duì)任何值都適用
在對(duì)非數(shù)值應(yīng)用一元加(減)操作符時(shí),該操作符會(huì)像Number()函數(shù)一樣對(duì)這個(gè)值執(zhí)行轉(zhuǎn)換。
5.2 位操作符......
5.3 布爾操作符 5.3.1 邏輯非邏輯非操作符由一個(gè)嘆號(hào)(!)表示,可以應(yīng)用于ECMAScript中的任何值。無(wú)論這個(gè)值是什么數(shù)據(jù)類型,這個(gè)操作符都會(huì)返回一個(gè)布爾值。
同時(shí)使用兩個(gè)邏輯非操作符,實(shí)際上就會(huì)模擬Boolean()轉(zhuǎn)型函數(shù)的行為
邏輯與操作符由兩個(gè)和號(hào)(&&)表示,有兩個(gè)操作數(shù)
邏輯與操作可以應(yīng)用于任何類型的操作數(shù),而不僅僅是布爾值。在有一個(gè)操作數(shù)不是布爾值的情況下,邏輯與操作就不一定返回布爾值:
如果第一個(gè)操作數(shù)是對(duì)象,則返回第二個(gè)操作數(shù)
如果第二個(gè)操作數(shù)是對(duì)象,則只有在第一個(gè)操作數(shù)的求值結(jié)果為true的情況下才會(huì)返回該對(duì)象
如果兩個(gè)操作數(shù)都是對(duì)象,則返回第二個(gè)操作數(shù)
如果第一個(gè)操作數(shù)是null,則返回null
如果第一個(gè)操作數(shù)是NaN,則返回NaN
如果第一個(gè)操作數(shù)是undefined,則返回undefined
邏輯與操作屬于短路操作,如果第一個(gè)操作數(shù)能夠解決結(jié)果,那么久不會(huì)再對(duì)第二個(gè)操作數(shù)求值
var found = true; var result = (found && someUndefinedVariable); //這里會(huì)發(fā)生錯(cuò)誤 console.log(result); //這一行不會(huì)執(zhí)行
上面代碼中,當(dāng)執(zhí)行邏輯與操作符時(shí)會(huì)發(fā)生錯(cuò)誤,因?yàn)樽兞縮omeUndefinedVariable沒(méi)有聲明
var found = false; var result = (found && someUndefinedVariable); //不會(huì)發(fā)生錯(cuò)誤 console.log(result); //會(huì)執(zhí)行("false")5.3.3 邏輯或
邏輯或操作符由兩個(gè)豎線符號(hào)(||)表示,有兩個(gè)操作數(shù)
與邏輯與相似,如果有一個(gè)操作數(shù)不是布爾值,邏輯或也不一定返回布爾值:
如果第一個(gè)操作數(shù)是對(duì)象,則返回第一個(gè)操作數(shù)
如果第一個(gè)操作數(shù)的求值結(jié)果為false,則返回第二個(gè)操作數(shù)
如果兩個(gè)操作數(shù)都是對(duì)象,則返回第一個(gè)操作數(shù)
如果兩個(gè)操作數(shù)都是對(duì)象,則返回第一個(gè)操作數(shù)
如果兩個(gè)操作數(shù)都是null,則返回null
如果兩個(gè)操作數(shù)都是undefined,則返回undefined
邏輯或操作符也是短路操作符。也就是說(shuō),如果第一個(gè)操作數(shù)的求值結(jié)果為true,就不會(huì)對(duì)第二個(gè)操作數(shù)求值了
5.6 關(guān)系操作符小于(<)、大于(>)、小于等于(<=)、大于等于(>=)
當(dāng)關(guān)系操作符的操作數(shù)使用了非數(shù)值時(shí),會(huì)進(jìn)行數(shù)據(jù)轉(zhuǎn)換或完成某些奇怪的操作:
如果兩個(gè)操作數(shù)都是數(shù)值,則執(zhí)行數(shù)值比較
如果兩個(gè)操作數(shù)都是字符串,則比較兩個(gè)字符串對(duì)應(yīng)的字符編碼值
如果一個(gè)操作數(shù)是數(shù)值,則將另一個(gè)操作數(shù)轉(zhuǎn)換為一個(gè)數(shù)值,然后執(zhí)行數(shù)值比較
如果一個(gè)操作數(shù)是對(duì)象,則調(diào)用這個(gè)對(duì)象的valueOf()方法,用得到的結(jié)果按照前面的規(guī)則執(zhí)行比較。如果對(duì)象沒(méi)有valueOf()方法,則調(diào)用toString()方法,并用得到的結(jié)果根據(jù)前面的規(guī)則執(zhí)行比較
如果一個(gè)操作數(shù)是布爾值,則先將其轉(zhuǎn)換為數(shù)值,然后再執(zhí)行比較
5.7 相等操作符 5.7.1相等和不相等任何操作數(shù)與NaN比較,都會(huì)返回false
如果兩個(gè)操作數(shù)數(shù)據(jù)類型不同,則會(huì)先轉(zhuǎn)換數(shù)據(jù)類型(通常稱為強(qiáng)制轉(zhuǎn)型)再比較
null和undefined是相等的
要比較相等性之前,不能將null和undefined轉(zhuǎn)換成其他任何值
有一個(gè)操作符為NaN時(shí),相等操作符返回false,NaN不等于NaN
如果兩個(gè)操作數(shù)都是對(duì)象,則比較它們是不是同一個(gè)對(duì)象
5.7.2 全等和不全等除了在比較之前不轉(zhuǎn)換操作數(shù)之外,全等和不全等操作符沒(méi)有什么區(qū)別
5.8 條件操作符variable = boolean_expression ? true_value : false_value;
var max = (num1 > num2) ? num1 : num2;5.9 賦值操作符
等于號(hào)(=)
5.10 逗號(hào)操作符逗號(hào)(,)
6語(yǔ)句 6.1 if語(yǔ)句if(1 > 25){ console.log(); }else{ console.log(); }6.2 do-while語(yǔ)句
var i = 0; do{ i += 2; }while(i < 10); console.log(i);6.3 while語(yǔ)句
var i = 0; while(1 < 10){ i += 2; }6.4 for語(yǔ)句
var count = 10; for(var i = 0; i < count; i++){ console.log(i); }
由于ECMAScript中不存在塊級(jí)作用域,因此在循環(huán)內(nèi)部定義的變量也可以在外部訪問(wèn)到
6.5 for-in語(yǔ)句for語(yǔ)句中的初始化表達(dá)式、控制表達(dá)式和循環(huán)后表達(dá)式都是可選的。將這三個(gè)表達(dá)式全部省略,就會(huì)創(chuàng)建一個(gè)無(wú)限循環(huán)
for-in語(yǔ)句是一種精準(zhǔn)的迭代語(yǔ)句,可以用來(lái)枚舉對(duì)象的屬性
for(var propName in window){ document.write(propName); }
6.6 label語(yǔ)句ECMAScript對(duì)象的屬性沒(méi)有順序。因此,通過(guò)for-in循環(huán)輸出的屬性名的順序是不可預(yù)測(cè)的
使用label語(yǔ)句可以在代碼中添加標(biāo)簽,以便將來(lái)使用
start: for(var i = 0; i < count; i++){ console.log(i); }
6.7 break和continue語(yǔ)句這個(gè)例子中定義的start標(biāo)簽可以在將來(lái)有break或continue語(yǔ)句引用。加標(biāo)簽的語(yǔ)句一般都要與for語(yǔ)句等循環(huán)語(yǔ)句配合使用
break和continue語(yǔ)句用于在循環(huán)中精確地控制代碼的執(zhí)行
var num = 0; outermost: for(var i = 0; i < 10; i++){ for(var j = 0; j < 10; j++){ if(i == 5 && j == 5){ break outermost; } num++; } } console.log(num); //55
var num = 0; outermost: for(var i = 0; i < 10; i++){ for(var j = 0; j < 10; j++){ if(i == 5 && j == 5){ continue outermost; } num++; } } console.log(num); //95 //如果兩個(gè)循環(huán)都自然結(jié)束,num的值應(yīng)該是1006.8 with語(yǔ)句(舍棄!)
嚴(yán)格模式下不允許使用with語(yǔ)句,否則將視為語(yǔ)法錯(cuò)誤。
由于大量使用with語(yǔ)句會(huì)導(dǎo)致性能下降,同時(shí)也會(huì)給調(diào)試代碼造成困難,因此不建議使用with語(yǔ)句
var num = 25; switch (true){ case num < 0: console.log("0"); break; case num >= 0 && num <= 10: console.log("0"); break; default: console.log("0"); }
7 函數(shù)switch語(yǔ)句在比較值時(shí)使用的是全等操作符,因此不會(huì)發(fā)生類型轉(zhuǎn)換
函數(shù)中的return語(yǔ)句可以不帶有任何返回值。在這種情況下,函數(shù)在停止執(zhí)行后將返回undefined值。
7.1 理解參數(shù)推薦的做法是要么讓函數(shù)始終都返回一個(gè)值,要么永遠(yuǎn)都不要返回值。否則,如果函數(shù)有時(shí)候返回值,有時(shí)候不返回值,會(huì)給調(diào)試代碼帶來(lái)不便
ECMAScript中的參數(shù)在內(nèi)部是用一個(gè)數(shù)組來(lái)表示的。函數(shù)接收到的始終都是這個(gè)數(shù)組,而不關(guān)心數(shù)組中包含哪些參數(shù)(如果有參數(shù)的話)。
在函數(shù)體內(nèi)可以通過(guò)arguments對(duì)象來(lái)訪問(wèn)這個(gè)參數(shù)數(shù)組
ECMAScript函數(shù)有一個(gè)重要的特點(diǎn):命名的參數(shù)只提供便利,但不是必須的。
命名參數(shù)可以與arguments對(duì)象一起使用,arguments的值永遠(yuǎn)與對(duì)應(yīng)命名參數(shù)的值保持同步。
沒(méi)有傳遞值的命名參數(shù)將自動(dòng)被賦予undefined值。
7.2 沒(méi)有重載嚴(yán)格模式下不允許重寫(xiě)命名參數(shù)或者arguments的值,雖然可以執(zhí)行,但是命名參數(shù)與arguments對(duì)應(yīng)的值將不再同步
ECMAScript函數(shù)不能像傳統(tǒng)意義上那樣實(shí)現(xiàn)重載。ECMAScript函數(shù)沒(méi)有簽名,因?yàn)槠鋮?shù)是由包含零或多個(gè)值的數(shù)組來(lái)表示的。而沒(méi)有函數(shù)簽名,真正的重載是不可能做到的。
如果定義了兩個(gè)名字相同的函數(shù),則該名字只屬于后定義的函數(shù),先定義的函數(shù)將被覆蓋
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82418.html
摘要:高程讀書(shū)筆記第三章語(yǔ)法中的一切變量函數(shù)名和操作符都區(qū)分大小寫(xiě)。建議無(wú)論在任何情況下都指定基數(shù)函數(shù)與函數(shù)類似。返回對(duì)象的字符串?dāng)?shù)值或布爾值表示。 JS高程讀書(shū)筆記--第三章 語(yǔ)法 ECMAScript中的一切(變量、函數(shù)名和操作符)都區(qū)分大小寫(xiě)。 不能把關(guān)鍵字、保留字、true、false和null用做標(biāo)識(shí)符。 嚴(yán)格模式是為JavaScript定義了一種不同的解析與執(zhí)行模型。在嚴(yán)格模式...
摘要:深入系列第九篇,除了按值傳遞引用傳遞,還有第三種傳遞方式按共享傳遞定義在高級(jí)程序設(shè)計(jì)第三版,講到傳遞參數(shù)中所有函數(shù)的參數(shù)都是按值傳遞的。 JavaScript深入系列第九篇,除了按值傳遞、引用傳遞,還有第三種傳遞方式 —— 按共享傳遞 定義 在《JavaScript高級(jí)程序設(shè)計(jì)》第三版 4.1.3,講到傳遞參數(shù): ECMAScript中所有函數(shù)的參數(shù)都是按值傳遞的。 什么是按值傳遞呢?...
摘要:事情是如何發(fā)生的最近干了件事情,發(fā)現(xiàn)了源碼的一個(gè)。樓主找到的關(guān)于和區(qū)別的資料如下關(guān)于拿來(lái)主義為什么這么多文章里會(huì)出現(xiàn)澤卡斯的錯(cuò)誤代碼樓主想到了一個(gè)詞,叫做拿來(lái)主義。的文章,就深刻抨擊了拿來(lái)主義這一現(xiàn)象。 事情是如何發(fā)生的 最近干了件事情,發(fā)現(xiàn)了 underscore 源碼的一個(gè) bug。這件事本身并沒(méi)有什么可說(shuō)的,但是過(guò)程值得我們深思,記錄如下,各位看官仁者見(jiàn)仁智者見(jiàn)智。 平時(shí)有瀏覽別...
摘要:標(biāo)識(shí)符按以下規(guī)則組合第一個(gè)字符必須是一個(gè)字母,下劃線或一個(gè)美元符號(hào)。包含值的變量和尚未定義的變量是不一樣的,例子報(bào)錯(cuò)然而,對(duì)未初始化的變量執(zhí)行操作符會(huì)返回值,對(duì)未聲明的變量執(zhí)行操作符統(tǒng)一也會(huì)返回值。 1. 語(yǔ)法 1.1 區(qū)分大小寫(xiě) 變量、函數(shù)名和操作費(fèi)都區(qū)分大小寫(xiě)。 1.2 標(biāo)識(shí)符 標(biāo)識(shí)符指變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)。標(biāo)識(shí)符按以下規(guī)則組合: 第一個(gè)字符必須是一個(gè)字母,下劃線...
閱讀 842·2023-04-25 22:13
閱讀 2351·2019-08-30 15:56
閱讀 2234·2019-08-30 11:21
閱讀 661·2019-08-30 11:13
閱讀 2029·2019-08-26 14:06
閱讀 1966·2019-08-26 12:11
閱讀 2297·2019-08-23 16:55
閱讀 546·2019-08-23 15:30