JS第三章

JavaScript第三章

<h3 id="1">1.語法</h3>

?

1.1 區(qū)分大小寫

ECMAScript中的一切(變量、函數(shù)名和操作符)都區(qū)分大小寫

注意:不能使用關(guān)鍵字

1.2 標(biāo)識符

指變量沉馆、函數(shù)携狭、屬性的名字暂殖,或者函數(shù)的參數(shù)

規(guī)則:第一個字符必須是一個字母、下劃線(_)或一個美元符號($)其他字符可以是字母、下劃線、美元符號或數(shù)字

駝峰大小寫格式(CMAScript的規(guī)則第一個字母小寫登疗,剩下的每個單詞的首字母大寫)

1.3 注釋

ECMAScript使用 C風(fēng)格的注釋(/**/或者//)

塊級注釋以一個斜杠和一個星號(/)開頭,以一個星號和一個斜杠(/)結(jié)尾

1.4 嚴(yán)格模式

在嚴(yán)格模式下嫌蚤,ECMAScript 3中的一些不確定的行為將得到處理辐益,而且對某些不安全 的操作也會拋出錯誤。

要在整個腳本中啟用嚴(yán)格模式脱吱,可以在頂部添加如下代碼: "use strict"

可以指定函數(shù)在嚴(yán)格模式下執(zhí)行: function doSomething(){ "use strict"; //函數(shù)體 }

1.5 語句

語句以一個分號“;”結(jié)尾

在控制語句中使用代碼塊可以讓編碼意圖更加清晰智政,而且也能降低修改代碼時出錯的幾率。

1.6 關(guān)鍵字

可用于表示控制語句的開始或結(jié)束箱蝠,或 者用于執(zhí)行特定操作等续捂。

1.7 保留字

非嚴(yán)格模式下

嚴(yán)格模式下

使用關(guān)鍵字作標(biāo)識符,會導(dǎo)致“Identifier Expected”錯誤

注意:關(guān)鍵字和保留字雖然仍然不能作為標(biāo)識符使用宦搬,但現(xiàn)在可以用作對象的屬性名牙瓢。

1.7 變量

變量是松散類型;可以用來保存任何類型的數(shù)據(jù)间校。

定義變量時要使用 var 操作符矾克;未初始化的變量會保存一個特殊值——undefined;定義后的變量可以取代不同類型的值(但是這個操作不推薦)憔足。

在函數(shù)中定義的變量生命周期為函數(shù)執(zhí)行到函數(shù)結(jié)束胁附,退出后就銷毀(必須是用var定義的,否則為全局變量)滓彰,只要調(diào)用過一次該函數(shù)控妻,這個變量就有了定義,就可以在函數(shù)外部的任何地方被訪問到揭绑。

在嚴(yán)格模式下弓候,不能定義名為 eval 或 arguments 的變量,否則會導(dǎo)致語法錯誤。

?

<h3 id="2">2.數(shù)據(jù)類型</h3>

?

2.1 基本數(shù)據(jù)類型(5種)

Undefined菇存、Null彰居、Boolean、Number 和String

2.2 復(fù)雜數(shù)據(jù)類型

object撰筷,本質(zhì)上是由一組無序的名值對組成的陈惰。

2.3 typeof操作符

是松散類型的,檢測給定變量的數(shù)據(jù)類型毕籽。

返回的字符串:

"undefined"——如果這個值未定義抬闯;

"boolean"——如果這個值是布爾值;

"string"——如果這個值是字符串关筒;

"number"——如果這個值是數(shù)值溶握;

"object"——如果這個值是對象或 null;

"function"——如果這個值是函數(shù)蒸播。

typeof 操作符的操作數(shù)可以是變量(message)睡榆,也可以是數(shù)值字面量;

使用:typeof 變量(或者數(shù)值字面量)

括號不是必須的

注意:調(diào)用 typeof null 會返回"object"袍榆,因為特殊值 null 被認為是一個空的對象引用

函數(shù)在 ECMAScript中是對象胀屿,不是一種數(shù)據(jù)類型(具有特殊屬性,可以區(qū)分函數(shù)與其他對象)包雀。

2.4 Undefined類型

Undefined 類型只有一個值宿崭,即特殊的 undefined;定義了一種類型卻沒有初始化的時候也為undefined類型才写;一般而言葡兑,不存在需要顯式地把一個變量設(shè)置為 undefined 值的情況;該類型主要用于比較赞草。

包含 undefined 值的變量與尚未定義的變量還是不一樣的讹堤。

對于尚未聲明的變量,只執(zhí)行typeof操作符檢測其數(shù)據(jù)類型厨疙;

對未經(jīng)聲明的變量調(diào)用 delete 不會導(dǎo)致錯 誤洲守,但這樣做沒什么實際意義,而且在嚴(yán)格模式下確實會導(dǎo)致錯誤轰异。

可以理解為一個是未初始化的類型岖沛,另一個是未聲明暑始,同樣有undefined的意思;

良好的習(xí)慣:顯式地初始化變量搭独,有利于檢測變量有沒有被聲明

2.5 Null類型

該類型只有一個值null;typeof 操作符檢測 null 值時會返回"object"(null值表示空對象指針)廊镜;

保存對象的變量還沒有真正保存對象牙肝,就應(yīng)該明確地讓該變量保存 null 值。(與undefined不一樣,需要顯式的進行設(shè)置值)

2.6 Boolean類型

有兩個字面值:true 和 false(與數(shù)字值沒關(guān)系(即true不一定是1配椭,false不一定是0)虫溜,區(qū)分大小寫;

所有類型的值都有與這兩個 Boolean 值等價的值

將一個值轉(zhuǎn)換為其對應(yīng)的 Boolean 值股缸,可以調(diào)用轉(zhuǎn)型函數(shù) Boolean()

字符串 message 被轉(zhuǎn)換成了一個 Boolean 值衡楞,該值被保存在 messageAsBoolean 變量中。

2.7 Number類型

2.7.1 整數(shù)
  • 十進制

  • 八進制

    第一位必須是0敦姻,接著是八進制數(shù)列(0-7);

    字面值中的 數(shù)值超出了范圍瘾境,那么前導(dǎo)零將被忽略,后面的數(shù)值將被當(dāng)作十進制數(shù)值解析;

    八進制字面量在嚴(yán)格模式下是無效的镰惦。

  • 十六進制

    十六進制字面值的前兩位必須是 0x迷守,后跟任何十六進制數(shù)字(0~9 及 A~F);

進行算術(shù)計算時,所有以八進制和十六進制表示的數(shù)值終都將被轉(zhuǎn)換成十進制數(shù)值

2.7.2 浮點數(shù)值(不能作比較旺入,除了以精度計算即利用偏差值大小來判斷)
  • 數(shù)值中必須包含一個小數(shù)點兑凿,并且小數(shù)點后面必須至少有一位數(shù)字

  • 保存浮點數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍

  • 注意:小數(shù)點后面沒有跟任何數(shù)字,那么這個數(shù)值就可以作為整數(shù)值來保存

  • 浮點數(shù)值本身表示的就是一個整數(shù)(如1.0)茵瘾,那么該值也會被轉(zhuǎn)換為整數(shù)

  • 科學(xué)計數(shù)法e表示法

    前面是一個數(shù)值(可以是整數(shù)也可以是浮點數(shù))礼华,中間是一個大寫或小寫的字母E,后面是10的冪中的指數(shù)拗秘,該冪值將用來與前面的數(shù)相乘

2.7.3 數(shù)值范圍
  • 超出 JavaScript數(shù)值范圍的值卓嫂,那么這個數(shù)值將被自動轉(zhuǎn)換成特殊的Infinity 值(具體來說,如果這個數(shù)值是負數(shù)聘殖,則會被轉(zhuǎn)換成-Infinity(負無窮)晨雳,如果這個數(shù)值是正數(shù),則會被轉(zhuǎn)換成 Infinity(正無窮))

  • 確定是否有窮方法

    isFinite()函數(shù)

    這個函數(shù)在參數(shù)位于小與大數(shù)值之間時會返回true

  • 訪問 Number.NEGATIVE_INFINITY 和 Number.POSITIVE_INFINITY 也可以 得到負和正 Infinity 的值

2.7.4 NaN 非數(shù)值(Not a Number)
  • 作用:確定這個參數(shù)是否“不是數(shù)值”

  • 任何不能被轉(zhuǎn)換為數(shù)值的值都會導(dǎo)致這個函數(shù)返回 true(根據(jù)是否可以轉(zhuǎn)換為數(shù)值來返回值)

  • 使用在對象中

    在基于對象調(diào)用 isNaN() 函數(shù)時奸腺,會首先調(diào)用對象的 valueOf()方法餐禁,然后確定該方法返回的值是否可以轉(zhuǎn) 換為數(shù)值。不能突照,則基于這個返回值再調(diào)用 toString()方法帮非,再測試返回值。

2.7.5 數(shù)值轉(zhuǎn)換
  • Number()讹蘑、parseInt()和 parseFloat()三個函數(shù)末盔,parseInt()和 parseFloat()專門用于把字符串轉(zhuǎn)換成數(shù)值。

  • 轉(zhuǎn)型函數(shù) Number()可以用于任何數(shù)據(jù)類型

    如果是 Boolean 值座慰,true 和 false 將分別被轉(zhuǎn)換為 1和 0陨舱。

    如果是數(shù)字值,只是簡單的傳入和返回版仔。

    如果是 null 值游盲,返回 0误墓。

    如果是 undefined,返回 NaN益缎。

    如果是字符串:只包含數(shù)字(包括前面帶正號或負號的情況)谜慌,則將其轉(zhuǎn)換為十進制數(shù)值;字符串中包含有效的浮點格式莺奔,如"1.1"欣范,則將其轉(zhuǎn)換為對應(yīng)的浮點數(shù)值;字符串中包含有效的十六進制格式令哟,例如"0xf"熙卡,則將其轉(zhuǎn)換為相同大小的十進制整 數(shù)值; 字符串是空的(不包含任何字符)励饵,則將其轉(zhuǎn)換為 0驳癌; 字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為 NaN役听。

    如果是對象:調(diào)用對象的 valueOf()方法颓鲜,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換 的結(jié)果是 NaN典予,則調(diào)用對象的 toString()方法甜滨,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符 串值。

注意:一元加操作符的操作與 Number()函數(shù)相同瘤袖。

  • parseInt()函數(shù)

    用 parseInt()轉(zhuǎn)換空字符串會返回 NaN(Number()對空字符返回 0)衣摩。如 果第一個字符是數(shù)字字符,parseInt()會繼續(xù)解析第二個字符捂敌,直到解析完所有后續(xù)字符或者遇到了 一個非數(shù)字字符;

    如果字符串以"0x"開頭且后跟數(shù)字字符艾扮,就會將其當(dāng)作一 個十六進制整數(shù);如果字符串以"0"開頭且后跟數(shù)字字符占婉,則會將其當(dāng)作一個八進制數(shù)來解析泡嘴。

    消除錯誤判斷換進制,為該函數(shù)提供第二個參數(shù)能確保獲得正確結(jié)果逆济。

    此為了避免錯誤的解析酌予,我們建議無論在什么情況下都明確指定基數(shù)(常常解析10進制數(shù)字,始終將 10 作為第二個參數(shù)是非常必要的奖慌。)

  • parseFloat()函數(shù)

    字符串中的第一個小數(shù)點是有效的抛虫,而第二個小數(shù)點就是無效的了,因此它后面的字符串將被忽略,例子: "22.34.5"將會被轉(zhuǎn)換為 22.34简僧;

    該函數(shù)只解析十進制值建椰;

    始終都會忽略前導(dǎo)的零,注意:十六進制格式的字符串則始終會被轉(zhuǎn)換成 0涎劈;

    字符串包含的是一個可解析為整數(shù)的數(shù)(沒有小數(shù)點广凸,或者小數(shù)點后 都是零)阅茶,parseFloat()會返回整數(shù)蛛枚。

2.7.6 String類型

  • 用于表示由零或多個16位Unicode字符組成的字符序列谅海,即字符串;

  • 字符串可以由雙 引號(")或單引號(')表示蹦浦;

  • 字符字面量(轉(zhuǎn)義序列)

  • 任何字符串的長度都可以通過訪問其 length 屬性取得

    這個屬性返回的字符數(shù)包括 16 位字符的數(shù)目扭吁。如果字符串中包含雙字節(jié)字符,那么 length 屬性 可能不會精確地返回字符串中的字符數(shù)目

  • ECMAScript中的字符串是不可變的(重要)

    改變某個變量保存的字符串盲镶,首先要銷毀原來的字符串侥袜,然后再用另一個包含新值的字符串填充該變量;

    過程描述:首先創(chuàng)建一個能容納 10個字符的 新字符串,然后在這個字符串中填充"Java"和"Script"溉贿,后一步是銷毀原來的字符串"Java"和字 符串"Script"

  • 轉(zhuǎn)換為字符串的方式(主要為兩種方法)

    1. 使用幾乎每個值都有的 toString()方法

      返回相應(yīng)值的字符串表現(xiàn)

      注意: null 和 undefined 值沒有這個方法

      通過傳遞基數(shù)枫吧,toString()可以輸出以二進制、八進制宇色、十六進制九杂,乃至其他任意有效進制格 式表示的字符串值

    2. 轉(zhuǎn)型函數(shù) String()

      能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串(在不知轉(zhuǎn)換的值是否為null或者undefined情況下)

      如果值有 toString()方法,則調(diào)用該方法(沒有參數(shù))并返回相應(yīng)的結(jié)果宣蠕; (針對是否為null和undefined)

      如果值是 null例隆,則返回"null"; 如果值是 undefined抢蚀,則返回"undefined"镀层。

特殊方法:要把某個值轉(zhuǎn)換為字符串,可以使用加號操作符把它與一個字符 串("")加在一起

2.7.7 Object類型

  • ECMAScript中的對象其實就是一組數(shù)據(jù)和功能的集合

  • 對象可以通過執(zhí)行 new 操作符后跟要創(chuàng)建 的對象類型的名稱來創(chuàng)建

  • 在 ECMAScript中皿曲,如果不給構(gòu)造函數(shù)傳遞參數(shù)唱逢,則可以省略后面的那一對圓括號(與java的一個不同之處)

  • 對象都具有的屬性和方法

  • ECMA-262中對象的行為不一定適用于 JavaScript中的其他對象

?

<h3 id="3">3.操作符</h3>

?

用于操作數(shù)據(jù)值,適用于很多值屋休,例如字 符串惶我、數(shù)字值、布爾值博投,甚至對象绸贡。

包括算術(shù)操作符(如加號和減號)、位操作符毅哗、 關(guān)系操作符和相等操作符

3.1一元操作符

  • 只能操作一個值的操作符

  • 包括算術(shù)操作符(如加號和減號)听怕、位操作符、 關(guān)系操作符和相等操作符虑绵。

  • 遞增和遞減操作符

    遞增和遞減操作符直接借鑒自 C尿瞭,而且各有兩個版本:前置型和后置型。

    執(zhí)行前置遞增和遞減操作時翅睛,變量的值都是在語句被求值以前改變的声搁。(在計算機科學(xué)領(lǐng)域黑竞,這種情況通常被稱作副效應(yīng))

    適用規(guī)則:

    例子:
  • 一元加和減操作符

    一元加操作符

    以一個加號(+)表示,放在數(shù)值前面疏旨,用于表示負數(shù)很魂,對數(shù)值不會產(chǎn)生任何影響

    對非數(shù)值應(yīng)用一元加操作符時,該操作符會像 Number()轉(zhuǎn)型函數(shù)一樣對這個值執(zhí)行轉(zhuǎn)換,步驟為:布爾值 false 和 true 將被轉(zhuǎn)換為 0和 1檐涝,字符串值會被按照一組特殊的規(guī)則進行解析遏匆,而對象是先調(diào)用它們的 valueOf()和(或)toString()方法,再轉(zhuǎn)換得到的值谁榜。

    一元減操作符

    用于表示負數(shù)幅聘,例如將1轉(zhuǎn)換成-1

    應(yīng)用于非數(shù)值時,一元減操作符遵循與一元加操作符相同的規(guī)則窃植,后再將得到的數(shù)值轉(zhuǎn)換為負數(shù)

3.2 位操作符

  • 用于在基本的層次上帝蒿,即按內(nèi)存中表示數(shù)值的位來操作數(shù)值

  • ECMAScript 中的所有數(shù) 值都以 IEEE-754 64位格式存儲,操作的時候先將64位的值轉(zhuǎn)換成32位的整數(shù)巷怜,再進行位操作葛超,最后才將結(jié)果轉(zhuǎn)換成64位(副效應(yīng)——對特殊的 NaN 和 Infinity 值應(yīng)用位操作時,這兩個值都會被當(dāng)成 0來處理丛版;解決方法:如果對非數(shù)值應(yīng)用位操作符巩掺,會先使用 Number()函數(shù)將該值轉(zhuǎn)換為一個數(shù)值(自動完成),然后 再應(yīng)用位操作页畦。得到的結(jié)果將是一個數(shù)值)

  • 對于有符號的整數(shù)胖替,32位中的前 31位用于表示整數(shù)的值。第 32位用于表示數(shù)值的符號

  • 負數(shù)以二進制碼存儲豫缨,使用的格式是二進制補碼独令。計算二級制補碼的步驟:

  • 默認情況下,ECMAScript 中的所有整數(shù)都是有符號整數(shù)好芭。

  • 按位非(NOT):按位非操作符由一個波浪線(~)表示燃箭,執(zhí)行按位非的結(jié)果就是返回數(shù)值的反碼

  • 按位與(AND):按位與操作符由一個和號字符(&)表示,它有兩個操作符數(shù)舍败。

  • 按位或(OR) :按位或操作符由一個豎線符號(|)表示招狸,同樣也有兩個操作數(shù)。

  • 按位異或(XOR) :按位異或操作符由一個插入符號(^)表示邻薯,也有兩個操作數(shù)裙戏。

  • 左移操作符:由兩個小于號(<<)表示,這個操作符會將數(shù)值的所有位向左移動指定的位數(shù)厕诡。用0進行補位累榜。左移不會影響操作數(shù)的符號位。

  • 有符號的右移 :有符號的右移操作符由兩個大于號(>>)表示灵嫌,這個操作符會將數(shù)值向右移動壹罚,但保留符號位(即 正負號標(biāo)記)注意:用符號位填充

  • 無符號右移:無符號右移操作符由 3個大于號(>>>)表示葛作,這個操作符會將數(shù)值的所有 32位都向右移動;對正數(shù)來說猖凛,無符號右移的結(jié)果與有符號右移相同赂蠢;對負數(shù)來說,無符號右移是以 0來填充空位形病,而不是像有符號右移那 樣以符號位的值來填充空位客年。(會出現(xiàn)變大的情況)

3.3 布爾操作符

  • 邏輯非

    邏輯非操作符由一個嘆號(O挤)表示漠吻,可以應(yīng)用于 ECMAScript中的任何值。

    邏輯非操作符首先會將它的操作數(shù)轉(zhuǎn)換為一個布爾值司恳,然后再 對其求反途乃。

  • 邏輯與

    邏輯與操作可以應(yīng)用于任何類型的操作數(shù)

    邏輯與操作符由兩個和號(&&)表示,有兩個操作數(shù)

    邏輯與操作屬于短路操作扔傅,即如果第一個操作數(shù)能夠決定結(jié)果耍共,那么就不會再對第二個操作數(shù)求值。

  • 邏輯或

    邏輯或操作符由兩個豎線符號(||)表示猎塞,有兩個操作數(shù)

    短路操作符:如果第一個操作數(shù)的求值結(jié)果為 true试读,就不會對第二個操作數(shù)求值了

    如果 preferredObject 的值不是 null,那么它的值將被賦給 myObject荠耽;如果 是 null钩骇,則將 backupObject 的值賦給 myObject

3.4 乘性操作符

  • 乘法、除法和求模

  • 在操作數(shù)為非數(shù)值的情況下會執(zhí)行自動的類型轉(zhuǎn)換

  • 乘法

    乘法操作符由一個星號(*)表示铝量,用于計算兩個數(shù)值的乘積

  • 除法

    除法操作符由一個斜線符號(/)表示倘屹,執(zhí)行第二個操作數(shù)除第一個操作數(shù)的計算

3.5 加減性操作符(+/-)

兩個操作符都是數(shù)值,執(zhí)行常規(guī)的加法計算慢叨,然后根據(jù)下列規(guī)則返回結(jié)果:

其中有一個操作數(shù)是字符串

其中有一個是對象纽匙、數(shù)值或布爾值,先調(diào)用其toString()方法取得相應(yīng)的字符串值拍谐,再根據(jù)字符串規(guī)則來返回烛缔。

對于 undefined 和 null,則分別調(diào)用 String()函數(shù)并取得字符串"undefined"和"null"

3.6 關(guān)系操作符

  • 小于(<)轩拨、大于(>)践瓷、小于等于(<=)和大于等于(>=)

  • 返回值:布爾值

字符串:實際比較的是兩個字符串中對應(yīng)位置的每個字符的字符編碼值;

必須把兩個操作數(shù)轉(zhuǎn)換為相同的大 小寫形式(全部大寫或全部小寫),由于大小寫的編碼不同(真正按字母表順序比較字符串時候)气嫁。

與NaN比較的時候永遠都返回false

3.7 相等操作符

相等(==)和不相等(当窗!=)——先轉(zhuǎn)換再比較(強制轉(zhuǎn)型)

全等(===)和不全等(!==)——僅比較而不轉(zhuǎn)換

null == undefined 會返回 true,因為它們是類似的值寸宵;但 null === undefined 會返回 false崖面,因為它們是不同類型的值

為了保持代碼中數(shù)據(jù)類型的完整 性元咙,我們推薦使用全等和不全等操作符

3.8 條件操作符

表達式為:表達式1?表達式2:表達式3

先求解表達式1巫员,若其值為真(非0)則將表達式2的值作為整個表達式的取值庶香,

否則(表達式1的值為0)將表達式3的值作為整個表達式的取值。

3.9 賦值操作符

簡單的賦值操作符由等于號(=)表示简识,其作用就是把右側(cè)的值賦給左側(cè)的變量

3.10 逗號操作符

使用逗號操作符可以在一條語句中執(zhí)行多個操作

逗號操作符多用于聲明多個變量赶掖;但除此之外,逗號操作符還可以用于賦值七扰。在用于賦值時奢赂,逗號操作符總會返回表達式中的后一項

?

<h3 id="4">4.流控制語句</h3>

?

4.1 if語句

if (condition) statement1 else statement2

condition(條件)可以是任意表達式

調(diào)用 Boolean()轉(zhuǎn)換函數(shù)將這個表達式的結(jié)果轉(zhuǎn)換為一個布爾值(不是布爾值的時候)

4.2 do-while語句(像 do-while 這種后測試循環(huán)語句最常用于循環(huán)體中的代碼至少要被執(zhí)行一次的情形。 )

一種后測試循環(huán)語句

對條件表達式求值之前颈走,循環(huán)體內(nèi)的代碼至少會被執(zhí)行一次

4.3 while語句

while(expression) statement

while 語句屬于前測試循環(huán)語句

4.4 for語句

for (initialization; expression; post-loop-expression) statement

ECMAScript中不存在塊級作用域膳灶,因此在循環(huán)內(nèi)部定義的變量也可以在外部訪問到

將這三個表達式全部省略,就可以創(chuàng)建一個無限循環(huán)

4.5 for-in語句(遍歷)

for (property in expression) statement

一種精準(zhǔn)的迭代語句立由,可以用來枚舉對象的屬性

表示要迭代的對象的變量值為 null 或 undefined轧钓,不執(zhí)行循環(huán)體

Safari 3以前版本的for-in語句中存在一個bug,該bug會導(dǎo)致某些屬性被返回兩次

ECMAScript 對象的屬性沒有順序锐膜。因此毕箍,通過 for-in 循環(huán)輸出的屬性名的順序是不可預(yù)測的。 具體來講道盏,所有屬性都會被返回一次而柑,但返回的先后次序可能會因瀏覽器而異。

4.6 label語句

可以在代碼中添加標(biāo)簽捞奕,以便將來使用

label: statement

加標(biāo)簽的語句一般都 要與 for 語句等循環(huán)語句配合使用

4.7 break和continue語句

用于在循環(huán)中精確地控制代碼的執(zhí)行

break 語句會立即退出循環(huán)牺堰, 強制繼續(xù)執(zhí)行循環(huán)后面的語句。而 continue 語句雖然也是立即退出循環(huán)颅围,但退出循環(huán)后會從循環(huán)的頂 部繼續(xù)執(zhí)行

4.8 with語句

將代碼的作用域設(shè)置到一個特定的對象中

with (expression) statement;

目的主要是為了簡化多次編寫同一個對象的工作

注意:嚴(yán)格模式下不允許使用 with 語句伟葫,否則將視為語法錯誤。

由于大量使用 with 語句會導(dǎo)致性能下降院促,同時也會給調(diào)試代碼造成困難筏养,因此 在開發(fā)大型應(yīng)用程序時,不建議使用 with 語句常拓。

4.9 switch語句

一種流控制語句

語義:switch 語句中的每一種情形(case)的含義是:“如果表達式等于這個值(value)渐溶,則執(zhí)行后面的 語句(statement)”。而 break 關(guān)鍵字會導(dǎo)致代碼執(zhí)行流跳出 switch 語句弄抬。

通過為每個 case后面都添加一個 break 語句茎辐,就可以避免同時執(zhí)行多個 case代碼的情況。

可以在 switch 語句中使用任何數(shù)據(jù)類型,無論是字符串拖陆,還是對象都沒有問題弛槐。其次,每個 case的值不一定是常量依啰,可以是變量乎串,甚至是表達式。

注意:switch 語句在比較值時使用的是全等操作符速警,因此不會發(fā)生類型轉(zhuǎn)換(例如叹誉, 字符串"10"不等于數(shù)值 10)。

?

<h3 id="5">5.函數(shù)</h3>

?

  • ECMAScript中的函數(shù)使用 function 關(guān)鍵字來聲明闷旧,后跟一組參數(shù)以及函數(shù)體冀痕。
  • 調(diào)用函數(shù)通過其函數(shù)名來調(diào)用

  • ECMAScript 中的函數(shù)在定義時不必指定是否返回值球匕。

  • 任何函數(shù)在任何時候都可以通過 return 語句后跟要返回的值來實現(xiàn)返回值

  • return 語句也可以不帶有任何返回值释簿。在這種情況下椿争,函數(shù)在停止執(zhí)行后將返回 undefined 值逾柿。

一個函數(shù)中也可以包含多個 return 語句

  • 嚴(yán)格模式下:
  • 理解參數(shù):

ECMAScript函數(shù)不介意傳遞進 來多少個參數(shù)缀棍,也不在乎傳進來參數(shù)是什么數(shù)據(jù)類型。(原因:ECMAScript中的參數(shù)在內(nèi)部是用一個數(shù)組來表示)

在函數(shù)體內(nèi)可以通過 arguments 對象來 訪問這個參數(shù)數(shù)組机错,從而獲取傳遞給函數(shù)的每一個參數(shù)(arguments 對象只是與數(shù)組類似(它并不是 Array 的實例))

通過訪問 arguments 對象的 length 屬性可以獲知有多少個參數(shù)傳遞給了函數(shù)

函數(shù) doAdd()會在只有一個參數(shù)的情況下給該參數(shù)加上 10爬范;如果是兩個參數(shù),則將那個參數(shù)簡單 相加并返回結(jié)果弱匪。

  • 沒有重載

ECMAScirpt 函數(shù)沒有簽名青瀑,因為其參數(shù)是由包含零或多個值的數(shù)組來表示的。而沒有函數(shù)簽名萧诫,真正的重載是不可能做到的斥难。 如果在 ECMAScript中定義了兩個名字相同的函數(shù),則該名字只屬于后定義的函數(shù)帘饶。

<h3 id="6">6.小結(jié)</h3>


6
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哑诊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子及刻,更是在濱河造成了極大的恐慌镀裤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缴饭,死亡現(xiàn)場離奇詭異暑劝,居然都是意外死亡,警方通過查閱死者的電腦和手機颗搂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門担猛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事傅联≈侨拢” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵纺且,是天一觀的道長盏道。 經(jīng)常有香客問我,道長载碌,這世上最難降的妖魔是什么猜嘱? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮嫁艇,結(jié)果婚禮上朗伶,老公的妹妹穿的比我還像新娘。我一直安慰自己步咪,他們只是感情好论皆,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猾漫,像睡著了一般点晴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悯周,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天粒督,我揣著相機與錄音,去河邊找鬼禽翼。 笑死屠橄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闰挡。 我是一名探鬼主播锐墙,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼长酗!你這毒婦竟也來了溪北?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤花枫,失蹤者是張志新(化名)和其女友劉穎刻盐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劳翰,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡敦锌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了佳簸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乙墙。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡颖变,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出听想,到底是詐尸還是另有隱情腥刹,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布汉买,位于F島的核電站衔峰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛙粘。R本人自食惡果不足惜垫卤,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望出牧。 院中可真熱鬧穴肘,春花似錦、人聲如沸舔痕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伯复。三九已至慨代,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間边翼,已是汗流浹背鱼响。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留组底,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓筐骇,卻偏偏與公主長得像债鸡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铛纬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354