ch3 基本概念

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):

  1. 任何涉及NaN的操作都返回NaN
  2. 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類型

  1. 用雙引號(hào)表示的字符串和用單引號(hào)表示的字符串完全相同。
  2. 字符串是不可變的,也就是說(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)用了。

  1. 把一個(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í)例都具有下列屬性和方法
  1. constructor:保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)。對(duì)于前面的例子而言,構(gòu)造函數(shù)(constructor)
    就是Object()。
  2. hasOwnProperty(propertyName):用于檢查給定的屬性在當(dāng)前對(duì)象實(shí)例中(而不是在實(shí)例
    的原型中)是否存在。其中,作為參數(shù)的屬性名(propertyName)必須以字符串形式指定(例
    如:o.hasOwnProperty("name"))
  3. isPrototypeOf(object):用于檢查傳入的對(duì)象是否是傳入對(duì)象的原型
  4. propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語(yǔ)句來(lái)枚舉。與hasOwnProperty()方法一樣,作為參數(shù)的屬性名必須以字符串形式指定。
  5. toLocaleString():返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)。
  6. toString():返回對(duì)象的字符串表示。
  7. 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),可以模仿方法的重載。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 本章內(nèi)容 語(yǔ)法 數(shù)據(jù)類型 流控制語(yǔ)句 理解函數(shù) 3.1 語(yǔ)法 3.1.1 區(qū)分大小寫(xiě) 區(qū)分大小寫(xiě) 3.1.2 標(biāo)識(shí)...
    悶油瓶小張閱讀 736評(píng)論 0 0
  • 什么是 JavaScript 語(yǔ)言? JavaScript 是一種輕量級(jí)的腳本語(yǔ)言。所謂“腳本語(yǔ)言”(script...
    oWSQo閱讀 1,818評(píng)論 0 1
  • 昨天寫(xiě)了一篇文章。 只要是開(kāi)始「關(guān)愛(ài)」,都不算太晚 我現(xiàn)在說(shuō)說(shuō)寫(xiě)這篇文章的背景,是元旦前我去了一趟北京,純粹的參加...
    5d0ca103ab37閱讀 916評(píng)論 0 0
  • 從何時(shí)起 有了第一片落葉 花開(kāi)了又謝 從何時(shí)起 難以忘卻 你暖暖的笑臉 像個(gè)孩子 踮著腳尖 想要觸碰你的樣子...
    NKa閱讀 179評(píng)論 1 2
  • ??
    靜聽(tīng)Ty閱讀 171評(píng)論 0 1