ch3 基本概念
標(biāo)簽(空格分隔): JavaScript
語(yǔ)法
標(biāo)識(shí)符
- 第一個(gè)字符必須是字母、下劃線或美元
- 駝峰大小寫(xiě)格式
嚴(yán)格模式
ECMAScript5引入,定義了一種解析和執(zhí)行模型。此時(shí),ECMAScript3中的一些不確定行為將得到處理,對(duì)某些不安全的操作也會(huì)拋出錯(cuò)誤。
"use strict";
關(guān)鍵字與保留字
關(guān)鍵字
關(guān)鍵字 | 關(guān)鍵字 | 關(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 |
保留字
保留字 | 保留字 | 保留字 | 保留字 |
---|---|---|---|
abstract | enum | int | short |
boolean | export | interface | static |
byte | extends | long | super |
char | final | native | synchronized |
class | float | package | throws |
const | goto | private | transient |
debugger | implements | protected | volatile |
double | import | public |
變量
用var定義的變量將成為定義該變量的作用域中的局部變量。
function test(){
var message="hi";//局部變量,函數(shù)退出后就會(huì)被銷毀
}
test();
alert(message);//Uncaught ReferenceError: message is not defined
省略var可以創(chuàng)建全局變量
數(shù)據(jù)類型
5種簡(jiǎn)單的數(shù)據(jù)類型(基本數(shù)據(jù)類型)
注意大小寫(xiě)
- Undefined
- Null
- Boolean
- Number
- String
1種復(fù)雜數(shù)據(jù)類型
- Object(本質(zhì)是無(wú)序的鍵值對(duì))
typeof操作符
用例是檢測(cè)數(shù)據(jù)類型的。對(duì)變量應(yīng)用typeof操作符可能返回的結(jié)果:
注意大小寫(xiě)
- undefined
- boolean
- string
- number
- object
- function
使用
typeof message;
typeof (message);
typeof 9;
typeof是操作符,不是函數(shù)
,上面第二行代碼中的括號(hào)可以加上,但不是必需的。
typeof null;//object
這是因?yàn)閚ull被認(rèn)為是空的對(duì)象引用。
Undefined類型
該類型就一個(gè)值,undefined。如果聲明了變量卻沒(méi)初始化,這個(gè)變量的值就是undefined。
Null類型
該類型只有一個(gè)值,null,表示空對(duì)象指針。所以
typeof null;//返回object
實(shí)際上,undefined值派生自null值,因此規(guī)范規(guī)定兩者的相等性測(cè)試返回true
undefined==null;//true(轉(zhuǎn)換了操作數(shù))
undefined===null://false
Boolean類型
兩個(gè)值,true和false。這兩個(gè)值與數(shù)字值不是一回事,因此true不一定等于1,false也不一定等于0。
所有類型的值都可以調(diào)用函數(shù)Boolean()轉(zhuǎn)換成Boolean類型的值。轉(zhuǎn)換關(guān)系如下:
數(shù)據(jù)類型 | 什么值能轉(zhuǎn)換成true | 什么值能轉(zhuǎn)換成false
Boolean|true|false
String|非空字符串|""
Number|非零數(shù)字,包括無(wú)窮大|0和NaN
Object|任何對(duì)象|null
Undefined|N/A(不適用)|undefined
即
Boolean(false);//false
Boolean("");//false
Boolean(0);//false
Boolean(Nan);//false
Boolean(null);//false
Boolean(undefined);//false
流控制語(yǔ)句如if語(yǔ)句能自動(dòng)執(zhí)行Boolean轉(zhuǎn)換。如
var message="hi";
if(message){
//這里會(huì)被執(zhí)行
}
Number類型
八進(jìn)制第一位必須是0,如果字面值超出范圍,那么前導(dǎo)0會(huì)被忽略,后面的值被當(dāng)作十進(jìn)制處理
var num=079;//無(wú)效的八進(jìn)制,會(huì)被解析成79
數(shù)值范圍
- Number.MIN_VALUE
- Number.MAX_VALUE
- Number.NEGATIVE_INFINITY 即-Infinity
- Number.POSITIVE_INFINITY 即Infinity
無(wú)窮不是能參與數(shù)值計(jì)算的數(shù)值。
isFinite()函數(shù),返回true和false
NaN
一個(gè)特殊的數(shù)值,這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。例如,在其他編程語(yǔ)言中,任何數(shù)值除以0 都會(huì)導(dǎo)致錯(cuò)誤,從而停止代碼執(zhí)行。但在ECMAScript 中,任何數(shù)值除以0 會(huì)返回NaN,因此不會(huì)影響其他代碼的執(zhí)行。只有0除以0才會(huì)得到NaN,正數(shù)除以0得到Infinity,負(fù)數(shù)除以0得到-Infinity。
兩個(gè)特點(diǎn):
- 任何涉及NaN的操作都返回NaN
- NaN與任何值都不相等,包括NaN自身
isNaN()函數(shù)
接受一個(gè)參數(shù),該參數(shù)可以是任何類型,而函數(shù)會(huì)幫我們確定這個(gè)參數(shù)是否“不是數(shù)值”。isNaN()在接收到一個(gè)值之后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值。某些不是數(shù)值的值會(huì)直接轉(zhuǎn)換為數(shù)值。
isNaN(NaN);//true
isNaN(10);//false
isNaN("10");//轉(zhuǎn)換成數(shù)字10,false
isNaN("abc");//不能被轉(zhuǎn)換成數(shù)值,true
isNaN(true);//可以被轉(zhuǎn)成數(shù)值1,false
isNaN()確實(shí)也適用于對(duì)象。在基于對(duì)象調(diào)用isNaN()函數(shù)時(shí),會(huì)首先調(diào)用對(duì)象的valueOf()方法,然后確定該方法返回的值是否可以轉(zhuǎn)換為數(shù)值。如果不能,則基于這個(gè)返回值再調(diào)用toString()方法,再測(cè)試返回值。
數(shù)值轉(zhuǎn)換
將非數(shù)值轉(zhuǎn)換為數(shù)值的三個(gè)函數(shù):
Number(),參數(shù)為任意數(shù)據(jù)類型
parseInt(),參數(shù)為字?jǐn)?shù)串
parseFloat(),參數(shù)為字符串
Number()的轉(zhuǎn)換規(guī)則:
- 參數(shù)是Boolean值時(shí),true返回1,false返回0
- 參數(shù)是數(shù)字值,只是簡(jiǎn)單的傳入和返回
- 參數(shù)是null值,返回0
- 參數(shù)是對(duì)象,則調(diào)用對(duì)象的valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換結(jié)果是NaN,則調(diào)用對(duì)象的toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值
- 參數(shù)是字符串
- 如果字符串中只包含數(shù)字(包括前面帶正號(hào)或負(fù)號(hào)的情況),則將其轉(zhuǎn)換為十進(jìn)制數(shù)值。(前導(dǎo)0會(huì)被忽略)
- 如果字符串中包含有效的浮點(diǎn)格式,如"1.1",則將其轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)值(同樣,也會(huì)忽略前導(dǎo)零)
- 如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值;
- 如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為0
- 如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為NaN。
例子:
Number('Hello World'); //NaN
Number(''); //0
Number('000011'); //11
Number(true); //1
parseInt()的轉(zhuǎn)換規(guī)則
它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符。如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào),parseInt()
就會(huì)返回NaN;也就是說(shuō),用parseInt()轉(zhuǎn)換空字符串會(huì)返回NaN(Number()對(duì)空字符返回0)。如果第一個(gè)字符是數(shù)字字符,parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符。
例子:
parseInt("123blue') //123
parseInt('') //NaN
parseInt("0xA") //10
parseInt("22.5") //22
parseInt('070') //70
parseInt('070',8) //56
parseInt('70') //70
parseInt('0xf') //15
parseInt("AF", 16); //175
parseInt("AF"); //NaN
parseFloat()的轉(zhuǎn)換規(guī)則
也是從第一個(gè)字符(位置0)開(kāi)始解析每個(gè)字符。而且也是一直解析到字符串末尾,或者解析到遇見(jiàn)一個(gè)無(wú)效的浮點(diǎn)數(shù)字字符為止。也就是說(shuō),字符串中的第一個(gè)小數(shù)點(diǎn)是有效的,而第二個(gè)小數(shù)點(diǎn)就是無(wú)效的了,因此它后面的字符串將被忽略。它始終都會(huì)忽略前導(dǎo)的零。parseFloat()可以識(shí)別前面討論過(guò)的所有浮點(diǎn)數(shù)值格式,也包括十進(jìn)制整數(shù)格式。但十六進(jìn)制格式的字符串則始終會(huì)被轉(zhuǎn)換成0。由于parseFloat()只解析十進(jìn)制值,因此它沒(méi)有用第二個(gè)參數(shù)指定基數(shù)的用法。最后還要注意一點(diǎn):如果字符串包含的是一個(gè)可解析為整數(shù)的數(shù)(沒(méi)有小數(shù)點(diǎn),或者小數(shù)點(diǎn)后都是零),parseFloat()會(huì)返回整數(shù)。
例子:
parseFloat('1234blue') //1234
parseFloat('0xA') //0
parseFloat('22.5') //22.5
parseFloat('22.34.5') //22.34
parseFloat('0908.5') //908.5
parseFloat('3.125e7') //31250000
String類型
- 用雙引號(hào)表示的字符串和用單引號(hào)表示的字符串完全相同。
- 字符串是不可變的,也就是說(shuō),字符串一旦創(chuàng)建,它們的值就不能改變。要改變某個(gè)變量保存的字符串,首先要銷毀原來(lái)的字符串,然后再用另一個(gè)包含新值的字符串填充該變量。
例如:
var lang='Java';
lang+='Script';
實(shí)際操作過(guò)程如下:首先創(chuàng)建一個(gè)能容納10個(gè)字符的新字符串,然后在這個(gè)字符串中填充"Java"和"Script",最后一步是銷毀原來(lái)的字符串"Java"和字符串"Script",因?yàn)檫@兩個(gè)字符串已經(jīng)沒(méi)用了。
- 把一個(gè)值轉(zhuǎn)換為字符串有兩種方式:toString()方法和String()。
<center>toString()方法</center>
例子:
var age = 11;
var ageAsString = age.toString(); // 字符串"11"
var found = true;
var foundAsString = found.toString(); //字符串"true"
null 和undefined 值沒(méi)有toString()方法
toString()可以接受參數(shù):輸入數(shù)值的基數(shù)
var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"
<center>String()</center>
- 如果值有toString()方法,則調(diào)用該方法(沒(méi)有參數(shù))并返回相應(yīng)的結(jié)果;
- 如果值是null,則返回"null";
- 如果值是undefined,則返回"undefined"
例子:
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"
Object類型
- 用new創(chuàng)建
例子:
var o=new Object();
var o=new Object;//不傳遞參數(shù)的情況下,可以省去括號(hào)。不推薦
- Object類型是它所有實(shí)例的基礎(chǔ)。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ì)象是否是傳入對(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()方法的返回值
相同。
操作符
一元操作符
遞增和遞減操作符
即++和--
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2; // 等于21
var num4 = num1 + num2; // 等于21
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 等于22
var num4 = num1 + num2; // 等于21
var s1 = "2";
var s2 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function() {
return -1;
}
};
s1++; // 值變成數(shù)值3(字符串包含有效數(shù)字字符,則先將其轉(zhuǎn)為數(shù)字值,再加減1)
s2++; // 值變成NaN(字符串中沒(méi)有有效字符,將變量值設(shè)置為NaN,對(duì)NaN加減1還是NaN)
b++; // 值變成數(shù)值1(先將false轉(zhuǎn)為0,再加減1。同理,true會(huì)轉(zhuǎn)成1)
f--; // 值變成0.10000000000000009(由于浮點(diǎn)舍入錯(cuò)誤所致)
o--; // 值變成數(shù)值-2(先調(diào)用對(duì)象的valueOf方法以取得可操作的值,再加減1。)
一元加和減操作符
即+和-
對(duì)非數(shù)值應(yīng)用一元加(減)操作符時(shí),該操作符會(huì)像Number()轉(zhuǎn)型函數(shù)一樣對(duì)這個(gè)值執(zhí)行轉(zhuǎn)換。
換句話說(shuō),布爾值false 和true 將被轉(zhuǎn)換為0 和1,字符串值會(huì)被按照一組特殊的規(guī)則進(jìn)行解析,而
對(duì)象是先調(diào)用它們的valueOf()和(或)toString()方法,再轉(zhuǎn)換得到的值。
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function() {
return -1;
}
};
s1 = +s1; // 值變成數(shù)值1
s2 = +s2; // 值變成數(shù)值1.1
s3 = +s3; // 值變成NaN
b = +b; // 值變成數(shù)值0
f = +f; // 值未變,仍然是1.1
o = +o; // 值變成數(shù)值-1
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function() {
return -1;
}
};
s1 = -s1; // 值變成了數(shù)值-1
s2 = -s2; // 值變成了數(shù)值-1.1
s3 = -s3; // 值變成了NaN
b = -b; // 值變成了數(shù)值0
f = -f; // 變成了-1.1
o = -o; // 值變成了數(shù)值1
位操作符
- NOT
本質(zhì):操作數(shù)的負(fù)值減1
var num1 = 25; // 二進(jìn)制00000000000000000000000000011001
var num2 = ~num1; // 二進(jìn)制11111111111111111111111111100110
alert(num2); // -26
- AND
var result = 25 & 3;
alert(result); //1
25 = 0000 0000 0000 0000 0000 0000 0001 1001
??3 = 0000 0000 0000 0000 0000 0000 0000 0011
AND = 0000 0000 0000 0000 0000 0000 0000 0001
- OR
var result = 25 | 3;
alert(result); //27
25 = 0000 0000 0000 0000 0000 0000 0001 1001
??3 = 0000 0000 0000 0000 0000 0000 0000 0011
OR = 0000 0000 0000 0000 0000 0000 0001 1011
- XOR
var result = 25 ^ 3;
alert(result); //26
25 = 0000 0000 0000 0000 0000 0000 0001 1001
??3 = 0000 0000 0000 0000 0000 0000 0000 0011
XOR = 0000 0000 0000 0000 0000 0000 0001 1010
- 左移
左移不會(huì)影響操作數(shù)的符號(hào)位。換句話說(shuō),如果將-2 向左移動(dòng)5 位,結(jié)果將是-64,而非64。
var oldValue = 2; // 等于二進(jìn)制的10
var newValue = oldValue << 5; // 等于二進(jìn)制的1000000,十進(jìn)制的64
- 有符號(hào)的右移
var oldValue = 64; // 等于二進(jìn)制的1000000
var newValue = oldValue >> 5; // 等于二進(jìn)制的10 ,即十進(jìn)制的2
- 無(wú)符號(hào)的右移
var oldValue = 64; // 等于二進(jìn)制的1000000
var newValue = oldValue >>> 5; // 等于二進(jìn)制的10 ,即十進(jìn)制的2
//負(fù)數(shù)以其絕對(duì)值的二進(jìn)制補(bǔ)碼形式表示
var oldValue = -64; // 等于二進(jìn)制的11111111111111111111111111000000
var newValue = oldValue >>> 5; // 等于二進(jìn)制的00000111111111111111111111111110,十進(jìn)制的134217726
布爾操作符
- 邏輯非
alert(!false); // true
alert(!"blue"); // false
alert(!0); // true
alert(!NaN); // true
alert(!""); // true
alert(!12345); // false
alert(!!"blue"); //true
alert(!!0); //false
alert(!!NaN); //false
alert(!!""); //false
alert(!!12345); //true
- 邏輯或
如果第一個(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。
乘性操作符
- 乘法
Infinity*0 //NaN
Infinity*NaN //NaN
Infinity*3 //Infinity
Infinity*-3 //-Infinity
Infinity*Infinity //Inifinity
比較操作符
相等 不相等
先轉(zhuǎn)換類型再比較
== !=
規(guī)則:
- 如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值——false 轉(zhuǎn)換為0,而
true 轉(zhuǎn)換為1; - 如果一個(gè)操作數(shù)是字符串,另一個(gè)操作數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值;
- 如果一個(gè)操作數(shù)是對(duì)象,另一個(gè)操作數(shù)不是,則調(diào)用對(duì)象的valueOf()方法,用得到的基本類
型值按照前面的規(guī)則進(jìn)行比較; - null==undefined
- 比較相等性之前,不能將null 和undefined 轉(zhuǎn)換成其他任何值。
- 如果有一個(gè)操作數(shù)是NaN,則相等操作符返回false,而不相等操作符返回true。重要提示:
即使兩個(gè)操作數(shù)都是NaN,相等操作符也返回false;因?yàn)榘凑找?guī)則,NaN 不等于NaN。 - 如果兩個(gè)操作數(shù)都是對(duì)象,則比較它們是不是同一個(gè)對(duì)象。如果兩個(gè)操作數(shù)都指向同一個(gè)對(duì)象,
則相等操作符返回true;否則,返回false。
null == undefined //true
true == 1 //true
"NaN" == NaN //false
true == 2 //false
5 == NaN //false
undefined == 0 //false
NaN == NaN //false
null == 0 //false
NaN != NaN //true
"5"==5 //true
false == 0 //true
全等 不全等
=== !==
只在兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換就相等的情況下返回true
var result1 = ("55" == 55); //true,因?yàn)檗D(zhuǎn)換后相等
var result2 = ("55" === 55); //false,因?yàn)椴煌臄?shù)據(jù)類型不相等
null===undefiened; //false,因?yàn)樗鼈兪遣煌愋偷闹?
語(yǔ)句
with語(yǔ)句
語(yǔ)法:
with(expression) statement;
目的主要是為了簡(jiǎn)化多次編寫(xiě)同一個(gè)對(duì)象的工作。例如:
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
上面幾行代碼都包含location 對(duì)象。如果使用with 語(yǔ)句,可以把上面的代碼改寫(xiě)成如下所示:
with(location){
var qs=search.substring(1);
var hostName=hostname;
var url=href;
}
使用with 語(yǔ)句關(guān)聯(lián)了location對(duì)象。這意味著在with語(yǔ)句的代碼塊內(nèi)部,每個(gè)變量首先被認(rèn)為是一個(gè)局部變量,而如果在局部環(huán)境中找不到該變量的定義,就會(huì)查詢location對(duì)象中是否有同名的屬性。如果發(fā)現(xiàn)了同名屬性,則以location 對(duì)象屬性的值作為變量的值。
函數(shù)
理解參數(shù)
ECMAScript 函數(shù)不介意傳遞進(jìn)來(lái)多少個(gè)參數(shù),也不在乎傳進(jìn)來(lái)參數(shù)是什么數(shù)據(jù)類型。也就是說(shuō),即便你定義的函數(shù)只接收兩個(gè)參數(shù),在調(diào)用這個(gè)函數(shù)時(shí)也未必一定要傳遞兩個(gè)參數(shù)。可以傳遞一個(gè)、三個(gè)甚至不傳遞參數(shù),而解析器永遠(yuǎn)不會(huì)有什么怨言。之所以會(huì)這樣,原因是ECMAScript中的參數(shù)在內(nèi)部是用一個(gè)數(shù)組來(lái)表示的。函數(shù)接收到的始終都是這個(gè)數(shù)組,而不關(guān)心數(shù)組中包含哪些參數(shù)(如果有參數(shù)的話)。如果這個(gè)數(shù)組中不包含任何元素,無(wú)所謂;如果包含多個(gè)元素,也沒(méi)有問(wèn)題。實(shí)際上,在函數(shù)體內(nèi)可以通過(guò)arguments對(duì)象來(lái)訪問(wèn)這個(gè)參數(shù)數(shù)組,從而獲取傳遞給函數(shù)的每一個(gè)參數(shù)。
ECMAScript 中的所有參數(shù)傳遞的都是值,不可能通過(guò)引用傳遞參數(shù)。
未指定返回值的函數(shù)返回的是一個(gè)特殊的undefined 值。
function add(){
}
var a=add(); //undefined
沒(méi)有重載
ECMAScript 函數(shù)不能像傳統(tǒng)意義上那樣實(shí)現(xiàn)重載。而在其他語(yǔ)言(如Java)中,可以為一個(gè)函數(shù)編寫(xiě)兩個(gè)定義,只要這兩個(gè)定義的簽名(接受的參數(shù)的類型和數(shù)量)不同即可。如前所述,ECMAScirpt函數(shù)沒(méi)有簽名,因?yàn)槠鋮?shù)是由包含零或多個(gè)值的數(shù)組來(lái)表示的。而沒(méi)有函數(shù)簽名,真正的重載是不可能做到的。
如果在ECMAScript 中定義了兩個(gè)名字相同的函數(shù),則該名字只屬于后定義的函數(shù):
function addSomeNumber(num){
return num + 100;
}
function addSomeNumber(num) {
return num + 200;
}
var result = addSomeNumber(100); //300
通過(guò)檢查傳入函數(shù)中參數(shù)的類型和數(shù)量并作出不同的反應(yīng),可以模仿方法的重載。