初學(xué)者學(xué)習(xí) JavaScript – JS 基礎(chǔ)知識(shí)手冊_第1頁
初學(xué)者學(xué)習(xí) JavaScript – JS 基礎(chǔ)知識(shí)手冊_第2頁
初學(xué)者學(xué)習(xí) JavaScript – JS 基礎(chǔ)知識(shí)手冊_第3頁
初學(xué)者學(xué)習(xí) JavaScript – JS 基礎(chǔ)知識(shí)手冊_第4頁
初學(xué)者學(xué)習(xí) JavaScript – JS 基礎(chǔ)知識(shí)手冊_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本手冊的目的是迅速向你介紹JavaScript的基礎(chǔ)知識(shí),以便你可以開始編寫應(yīng)

用程序。

它并不包括JavaScript的所有理論和概念,而是只教授語言中最重要的構(gòu)件。

它包括變量、數(shù)據(jù)類型、函數(shù)、對象、數(shù)組和類。你還將學(xué)習(xí)如何結(jié)合它們來

構(gòu)建小型、可靠的程序。

本教程只關(guān)注作為編程語言的JavaScript和使用終端來執(zhí)行代碼。

本教程還包括每個(gè)部分的練習(xí),讓你有時(shí)間練習(xí)你所學(xué)到的知識(shí),并將這些知

識(shí)〃打入“你的大腦。

目錄

1-JavaScript簡介

為什么要學(xué)習(xí)JavaScript

JavaScript與Java

2-如何設(shè)置您的計(jì)算機(jī)

如何安裝VSCode

如何安裝Node.js

3-快速控制臺(tái)介紹

4-是時(shí)候向世界問好了!

5-JavaScript代碼結(jié)構(gòu)

聲明

評(píng)論

執(zhí)行流程

練習(xí)#1

6-JavaScript變量

變量命名

常數(shù)變量

var關(guān)鍵字

練習(xí)#2

概括

7-JavaScript基本數(shù)據(jù)類型

JavaScript中的字符串

JavaScript中的數(shù)字(整數(shù)和浮點(diǎn)數(shù))

JavaScript中的布爾值

JavaScript中未定義

JavaScript中的空值

8-類型轉(zhuǎn)換和強(qiáng)制

類型強(qiáng)制

類型強(qiáng)制規(guī)則

為什么應(yīng)該避免類型強(qiáng)制

9-JavaScript中的運(yùn)算符

算術(shù)運(yùn)算符

賦值運(yùn)算符

比較運(yùn)算符

邏輯運(yùn)算符

運(yùn)算符的類型

練習(xí)#3

10-JavaScript數(shù)組

數(shù)組索引位置

數(shù)組操作的特殊方法

練習(xí)#4

11-JavaScript中的控制流(條件)

if...else語句

switch...case語句

switch語句體

Switch語句用例

練習(xí)#5

12-JavaScript中的控制流(循環(huán))

for語句

什么時(shí)候使用for循環(huán)?

while語句

何時(shí)使用while循環(huán)?

練習(xí)#6

13-JavaScript中的函數(shù)

如何創(chuàng)建自己的函數(shù)

函數(shù)參數(shù)和參數(shù)

默認(rèn)參數(shù)

默認(rèn)參數(shù)和null

返回語句

變量范圍

其余參數(shù)

箭頭功能

單行和多行箭頭函數(shù)

不帶圓括號(hào)的箭頭函數(shù)

箭頭函數(shù)沒有參數(shù)綁定

如何輕松地將普通函數(shù)轉(zhuǎn)換為箭頭函數(shù)

練習(xí)#7

14-JavaScript中的對象

如何訪問對象值

如何向?qū)ο筇砑有聦傩?/p>

如何修改對象屬性

如何刪除對象屬性

如何檢查對象中是否存在屬性

練習(xí)#8

最后練習(xí):構(gòu)建一臺(tái)收銀機(jī)

結(jié)論

解決方案

1-JavaScript簡介

JavaScript是由BrendanEich在1995年4月左右創(chuàng)建的。當(dāng)時(shí),他正在為一

家名為Netscape的公司開發(fā)一款瀏覽器。他被告知,他只有10天時(shí)間來設(shè)計(jì)

和編寫一種可以在瀏覽器上運(yùn)行的編程語言的原型。

他需要?jiǎng)?chuàng)造一種能夠吸引非專業(yè)程序員的語言,比如微軟的VisualBasico

他只得到了10天的時(shí)間,因?yàn)榫W(wǎng)景公司需要發(fā)布一個(gè)當(dāng)時(shí)與微軟競爭的瀏覽

器。

最初,JavaScript并不像今天這樣強(qiáng)大,因?yàn)樗辉O(shè)計(jì)用來給網(wǎng)頁添加交互和

動(dòng)畫。直到2005年,jQuery和AJAX發(fā)布后,JavaScript才被用于所有網(wǎng)站。

在執(zhí)行D0M操作和發(fā)送異步請求方面,沒有比jQuery和AJAX更容易的選擇。

此外,一個(gè)活躍的JavaScript開發(fā)者社區(qū)繼續(xù)為該庫添加新的功能。

然后,谷歌推出了最新的Chrome瀏覽器,F(xiàn)acebook也開始吸引更多的人進(jìn)入

互聯(lián)網(wǎng)。JavaScript開始隨著這些互聯(lián)網(wǎng)巨頭的野心而發(fā)展。

瀏覽器開始開發(fā)可以在JavaScript中使用的API,JS能夠從瀏覽器中檢索IP

地址和地理位置等信息,使互聯(lián)網(wǎng)公司能夠更好地將其網(wǎng)站的功能本地化。

隨后,另一項(xiàng)創(chuàng)新的出現(xiàn),使JavaScript變得更加強(qiáng)大。

一個(gè)名為Node,js的服務(wù)器端環(huán)境于2009年發(fā)布,使JavaScript能夠像

PHP、Java、Python和Ruby一樣在服務(wù)器端運(yùn)行。它還使開發(fā)者能夠只用

JavaScript來開發(fā)全棧網(wǎng)絡(luò)應(yīng)用。

今天,JavaScript是一種可以支持網(wǎng)絡(luò)、桌面和移動(dòng)應(yīng)用的語言。

用0'ReillyMedia的創(chuàng)始人Tim0'Reilly的話說:

學(xué)習(xí)JavaScript曾經(jīng)意味著你不是一個(gè)嚴(yán)肅的開發(fā)者。今天,不學(xué)習(xí)

JavaScript也意味著同樣的事情。

現(xiàn)在,對于任何想成為網(wǎng)絡(luò)開發(fā)者的人來說,學(xué)習(xí)JavaScript是必須的。

現(xiàn)在,學(xué)習(xí)JavaScript對于那些想成為Web開發(fā)人員的人來說至關(guān)重要。

為什么要學(xué)習(xí)JavaScript?

您需要學(xué)習(xí)并深入理解JavaScript有4個(gè)充分的理由:

1.JavaScript是唯一可以在瀏覽器中運(yùn)行的語言

2.它很容易學(xué)習(xí)(但很難掌握)

3.它是制作Web應(yīng)用程序的必備語言

4.JavaScript開發(fā)人員有很多職業(yè)機(jī)會(huì)

學(xué)習(xí)JavaScript為您提供了成為前端、后端或移動(dòng)開發(fā)人員的巨大機(jī)會(huì)。

基本上,學(xué)習(xí)JavaScript是技術(shù)職業(yè)發(fā)展的門戶。

JavaScript與Java

最開始,JavaScript實(shí)際上被命名為LiveScript。它被重命名為

JavaScript,因?yàn)镴ava是一種非常流行的編程語言。

由于大多數(shù)軟件開發(fā)人員已經(jīng)熟悉Java,因此JavaScript這個(gè)名稱被認(rèn)為有

助于將JavaScript作為一種出色的編程語言進(jìn)行營銷,并吸引了當(dāng)時(shí)開發(fā)人

員的興趣。

需要明確的是,JavaScript和Java是兩種完全不同的編程語言。您無需了解

Java即可學(xué)習(xí)JavaScript(反之亦然)。:)

2-如何設(shè)置您的計(jì)算機(jī)

要使用JavaScript編寫程序,您需要安裝2個(gè)可用于所有操作系統(tǒng)的免費(fèi)工

具。

第一個(gè)要安裝的工具是VisualStudioCode。

如何安裝VSCode

VisualStudioCode或簡稱VSCode是一個(gè)為編寫代碼而創(chuàng)建的文本編輯器程

序。除了免費(fèi)之外,VSCode也是開源的,并且可在所有主要操作系統(tǒng)上使用。

您可以在Windows>macOS和Linux上使用VSCode,因此如果您的計(jì)算機(jī)上

沒有文本編輯器,我建議您在此處安裝VSCodeo

現(xiàn)在您已經(jīng)有了一個(gè)文本編輯器來編寫JavaScript代碼,您還需要一個(gè)軟件

來運(yùn)行JavaScript代碼。接下來讓我們安裝Node.js0

如何安裝Node.js

要在瀏覽器外部運(yùn)行JavaScript,您需要安裝Node,js,它本質(zhì)上是一個(gè)

JavaScript運(yùn)行器。

只需訪問Node,js網(wǎng)站(nodejs.org)并下載適合您計(jì)算機(jī)的最新LTS版

本。下載完成后,將其安裝到您的系統(tǒng)上。

您需要使用控制臺(tái)運(yùn)行Node,js,因此打開命令行或終端應(yīng)用程序并運(yùn)行以下

命令:

node-v

此命令會(huì)將新安裝的Node,js的版本輸出到控制臺(tái)。

3-快速控制臺(tái)介紹

控制臺(tái)是一個(gè)基于文本的界面,可用于在計(jì)算機(jī)上鍵入和運(yùn)行命令。在

Windows上,它稱為命令行。在macOS和Linux上,它稱為終端。

您不會(huì)使用控制臺(tái)中可用的所有命令。事實(shí)上,您只需要了解7個(gè)基本命令即

可幫助您運(yùn)行JavaScript代碼。

首先,打開計(jì)算機(jī)上的控制臺(tái)程序并輸入命令pwd:

pwd

這是您用來查找終端當(dāng)前所在目錄的命令。pwd是打印工作目錄的縮寫。

要更改工作目錄,您需要運(yùn)行該cd命令。

下面是移動(dòng)到子目錄的示例:

cddirectory_name/directory_name

要向上移動(dòng)到父目錄,請..在命令旁邊指定:

cd..

要向上移動(dòng)多個(gè)目錄,請使用

要清除控制臺(tái)上以前的命令和輸出,請使用以下clear命令:

clear

要打印當(dāng)前目錄中的文件和目錄列表,請運(yùn)行以下1s命令:

1s

要?jiǎng)?chuàng)建新文件,請使用以下touch命令,后跟文件名和擴(kuò)展名:

touchindex,js

上面的命令將創(chuàng)建一個(gè)index,js以當(dāng)前工作目錄命名的新JavaScript文件。

要?jiǎng)?chuàng)建新目錄,請使用mkdir命令后跟目錄名稱:

mkdirmy_project

要使用Node,js運(yùn)行JavaScript,請指定node后跟文件名,如下所示:

nodeindex.js

您將在同一控制臺(tái)中看到代碼的所有輸出。

您可以使用控制臺(tái)做很多事情,但這7個(gè)命令就足夠了,因?yàn)槲覀冎恍枰鼇?/p>

運(yùn)行JavaScript代碼。

接下來,讓我們運(yùn)行您的第一個(gè)JavaScript程序!

4-是時(shí)候向世界問好了!

是時(shí)候使用Node運(yùn)行您的第一個(gè)JavaScript程序了。

從控制臺(tái)中,創(chuàng)建一個(gè)index.js使用touch以下命令命名的新JavaScript文

件。

touchindex,js

接下來,使用VSCode打開該文件并將以下代碼行寫入該文件中:

console.log(,/HelloWorld!,z);

返回控制臺(tái),使用Node運(yùn)行此腳本:

nodeindex.js

控制臺(tái)應(yīng)該執(zhí)行該index,js文件并打印“Hell。World!”。

您剛剛使用Node,js運(yùn)行了第一個(gè)JavaScript程序。出色的!

當(dāng)您運(yùn)行該nodeindexes命令時(shí),Node.js程序開始從上到下逐行讀取腳

本。

程序node發(fā)現(xiàn)您寫了單詞,console.log后跟括號(hào)0,因此它知道您正在指示

它打印某些內(nèi)容。然后程序讀取您在括號(hào)中輸入的內(nèi)容并將其打印在控制臺(tái)

上。

在VSCode或其他文本編輯器程序中,您應(yīng)該看到代碼的不同部分以不同的顏

色突出顯示。這是文本編輯器的一項(xiàng)功能,稱為語法突出顯示,它對于幫助您

區(qū)分代碼的不同部分非常有用。

關(guān)鍵字log是一個(gè)函數(shù),因此它以一種顏色突出顯示,而括號(hào)中的單詞則具有

另一種顏色。

函數(shù)只是用于執(zhí)行特定任務(wù)的一段代碼。該log()函數(shù)用于“打印”您放在括

號(hào)內(nèi)的任何內(nèi)容。

另一方面,console關(guān)鍵字是一個(gè)對象,它是一個(gè)獨(dú)立的屬性,可以訪問某些

功能。

稍后我們將了解有關(guān)函數(shù)和對象的更多信息?,F(xiàn)在,只需記住console.log。

關(guān)鍵字用于將內(nèi)容打印到控制臺(tái)即可。

接下來,我們就開始學(xué)習(xí)JavaScript代碼結(jié)構(gòu)。

5-JavaScript代碼結(jié)構(gòu)

計(jì)算機(jī)程序是寫在文本文件中的一系列代碼段。然后,這些文本文件通過專門

為運(yùn)行代碼而設(shè)計(jì)的軟件來運(yùn)行。您之前下載的Node.js軟件是處理

JavaScript代碼的工具。

在進(jìn)一步討論之前,讓我們先了解一下代碼的結(jié)構(gòu)。

聲明

語句是計(jì)算機(jī)運(yùn)行的一條指令。把它想象成一個(gè)句子,但是對于計(jì)算機(jī)來說。

我們可以使用分號(hào)結(jié)束語句,;就像我們可以使用點(diǎn)結(jié)束句子一樣.

您可以在一行中編寫多個(gè)語句,但約定是每行編寫一個(gè)語句:

//Thisishardtoreadconsole,log("HelloWorld!z/);console.Io

g(TmlearningJavaScript");"Nowit,sbetterconsole.logC^Hell

oWorld!7");console.log(zzTmlearningJavaScript^);

每個(gè)語句都是執(zhí)行代碼的軟件需要執(zhí)行的某些操作的表達(dá)式。

評(píng)論

在編程中,注釋是我們用來傳達(dá)文件中編寫的代碼上下文的文本。

要在JavaScript中編寫注釋,您需要〃在注釋前添加兩個(gè)正斜杠,如下所

示:

//Thisisacomment//Thisisalsoacomment//Belowprin

ttwolinesofstatementsconsole,log("HelloWorld!/?);console,log

(TmlearningJavaScript");

語言處理器會(huì)忽略注釋,因此您可以使用注釋來禁用某些代碼,而不必刪除該

代碼。

下面的代碼顯示了如何禁用第二個(gè)打印語句:

console.log(,/HelloWorld!");〃console,log(TmlearningJavaScri

pt");

執(zhí)行流程

Node,js等語言處理器以自上而下的方法執(zhí)行語句。第一行寫入的語句將在第

二行之前執(zhí)行,然后繼續(xù)執(zhí)行到最后一行:

console.log(z/HelloWorld!");console,log(TmlearningJavaScript")

;//Printingnumbersconsole,log(1);console,log(2);console,log(3);

輸出:

HelloWorld!TmlearningJavaScriptl23

如果你想在文本之前打印數(shù)字,那么你需要將相應(yīng)的console,log()行移到頂

部。

練習(xí)#1

嘗試在控制臺(tái)上打印您的姓名、年齡和職業(yè)。

輸出如下所示:

JohnDoel9Student

現(xiàn)在你已經(jīng)了解了JavaScript的基本代碼結(jié)構(gòu),接下來我們繼續(xù)學(xué)習(xí)變量。

6-JavaScript變量

在解釋變量是什么之前,我希望您更改在index.js文件中編寫的代碼。

更改該文件中的代碼如下:

letmessage“HelloWorld!zzconsole.log(message)

接下來,使用命令運(yùn)行代碼nodeindex.jso您將看到與編寫“Hell。

World!”時(shí)相同的輸出。直接在console.log()函數(shù)內(nèi)部發(fā)送消息。怎么會(huì)這

樣?

這是因?yàn)樯厦娲a中寫的消息是一個(gè)變量。

在編程中,變量只是您賦予值的名稱,以便您稍后可以訪問該值。您可以將變

量視為可以標(biāo)記為某個(gè)值的標(biāo)簽,因此您可以使用該標(biāo)簽來引用該值。

要聲明變量,您需要鍵入關(guān)鍵字,let后跟變量名稱。

代碼中的第一行告訴JavaScript將message變量與值關(guān)聯(lián)起來Hello

World!:

letmessage=z/HelloWorld!”

在第二行中,JavaScript被指示打印的值message,而這正是它所做的。

您可以通過重新分配另一個(gè)值來更改變量的值,如下所示:

message="HelloWorld!Sprint(message)message="Niceweather!z/

print(message)

運(yùn)行該文件,您將看到打印的兩行輸出:

HelloWorld!Niceweather!

變量用于引用數(shù)據(jù),以便您可以在程序中多次使用相同的數(shù)據(jù)。

接下來,讓我們看看JavaScript中變量命名的一些規(guī)則。

變量命名

JavaScript有一些命名規(guī)則,您需要了解這些規(guī)則以避免命名錯(cuò)誤。

變量名只能包含字母、數(shù)字和下劃線(_)。這意味著您可以將變量命名為

message,message_l,message_2。

變量名稱的第一個(gè)字符不能是數(shù)字。message」沒關(guān)系。l_message不是。

您不能使用保留關(guān)鍵字,因?yàn)閏onsoleJavaScript使用它們來執(zhí)行某些操作。

JavaScript使用了許多其他關(guān)鍵字,您將在以下部分中了解這些關(guān)鍵字,例如

if、for和while。

變量名稱區(qū)分大小寫,這意味著Message、MESSAGE、和message可用于創(chuàng)建

三個(gè)不同的變量。但當(dāng)然,我不建議使用相似的名稱,因?yàn)檫@會(huì)引起混亂。

有時(shí),您需要多個(gè)單詞來聲明變量名。JavaScript有兩種全球通用的命名約

定:

1.camelCase

2.snake_case

駝峰式命名約定是使用大寫字母作為后續(xù)單詞的第一個(gè)字符。這是一個(gè)例子:

letmyAwesomeVariable

蛇形命名約定使用下劃線來分隔單詞。這是一個(gè)例子:

letmy_awesome_variable

兩者都是可接受的命名約定,但您應(yīng)該在代碼中堅(jiān)持其中一種以避免混淆。

常數(shù)變量

有時(shí)您需要在變量中存儲(chǔ)永遠(yuǎn)不會(huì)改變的值。

常量變量是在程序運(yùn)行期間其值不會(huì)改變的變量。在其他編程語言中,更改常

量的值會(huì)產(chǎn)生錯(cuò)誤。

在JavaScript中,常量變量是使用const關(guān)鍵字聲明的。

下面展示了如何在JavaScript中聲明2個(gè)常量:

constFILE_SIZE_LIMIT=2000constMAX_SPEED=300

常量的命名約定是全部使用大寫字母,但也可以使用小寫字母。大寫只是一個(gè)

標(biāo)準(zhǔn),讓常量更加突出。

var關(guān)鍵字

var關(guān)鍵字用于聲明具有全局作用域的變量。在JavaScript于2015年發(fā)

newlet和const關(guān)鍵字之前,該關(guān)鍵字是唯一可以用來聲明變量的關(guān)鍵

從今天開始,您應(yīng)該var盡可能避免使用,因?yàn)関ar可能會(huì)引入錯(cuò)誤,而您可

以通過使用該let關(guān)鍵字來避免。

為了向您展示我的意思,請考慮以下示例:

if(true){

varname=zzNathanz/;}console,log(name)

上面的代碼可以name很好地打印變量,但實(shí)際上不應(yīng)該,因?yàn)樽兞縩ame是在

if塊內(nèi)聲明的。

這是因?yàn)槭褂胿ar關(guān)鍵字聲明的任何變量都可以從任何地方訪問。該變量的范

圍是全局的。

另一方面,let關(guān)鍵字具有塊作用域,這意味著該變量只能從該塊及其所有子

塊訪問。

但為什么要費(fèi)心確定變量的范圍呢?這是因?yàn)椋?dāng)您有數(shù)百或數(shù)千行代碼時(shí),

跟蹤由于全局變量而發(fā)生的錯(cuò)誤可能會(huì)變得令人沮喪。

軟件開發(fā)中有一個(gè)原則稱為“最少暴露原則”,這意味著您不會(huì)暴露程序中不

必要的任何部分。

對變量進(jìn)行塊作用域可確保變量僅在需要該變量的代碼庫部分中公開和訪問。

使用關(guān)鍵字聲明的變量let與使用關(guān)鍵字聲明的變量相同,var但范圍級(jí)別除

外。

if(true){

letname=/,Nathan,/;}console,log(name)//Error:name

isnotdefined

這也意味著您現(xiàn)在可以使用var、let和const關(guān)鍵字來聲明變量。使用哪一

個(gè)?

一般來說,你可以用constfirst聲明一個(gè)變量。當(dāng)您編寫應(yīng)用程序并意識(shí)到需

要更改變量分配時(shí),可以將聲明更改為let.

如果你從一開始就知道變量的值會(huì)改變,那么你可以let立即使用。只是今天

不要使用var,否則人們可能會(huì)生你的氣。

練習(xí)#2

編寫一個(gè)包含三個(gè)變量的程序,每個(gè)變量具有以下值:

1.第一個(gè)變量包含您的名字

2.第二個(gè)變量包含您的年齡

3.第三個(gè)變量包含您的職業(yè)

然后使用該方法打印變量console.log()。這是示例輸出:

JohnDoeStudentl9

概括

如何使用變量來編寫一個(gè)程序來完成您想要它做的事情是作為程序員可以擁有

的最重要的技能之一。

但在詳細(xì)了解如何使用變量之前,讓我們先了解一下JavaScript中的數(shù)據(jù)類

型。

7-JavaScript基本數(shù)據(jù)類型

數(shù)據(jù)類型只是編程語言已知的不同數(shù)據(jù)類型的定義。

數(shù)據(jù)類型包含有關(guān)可以使用該數(shù)據(jù)執(zhí)行哪些操作和不能執(zhí)行哪些操作的規(guī)范。

向您展示一個(gè)對大腦友好的例子,我相信您同意這一點(diǎn)2+2=4?

嗯,JavaScript也同意這一點(diǎn):

console,log(2+2);//Output:4

但是,如果您嘗試添加帶有字母的數(shù)字(如下所示)怎么辦?

console.log(2+“ABC");

輸出:

2ABC

將數(shù)字和字母添加在一起將導(dǎo)致JavaScript將這些值連接或連接在一起。

在本節(jié)中,您將學(xué)習(xí)JavaScript知道的基本數(shù)據(jù)類型:

數(shù)

您還將看到這些不同類型如何對運(yùn)算符做出反應(yīng),+如上例所示。

首先,我們從字符串開始。

JavaScript中的字符串

字符串只是定義為一系列字符的數(shù)據(jù)。

console.log。您之前在調(diào)用函數(shù)打印消息時(shí)已經(jīng)看到過字符串?dāng)?shù)據(jù)的示例:

letmessage="Hello,Sunshine!,z;console,log(message);//Hello

,Sunshine!

字符串需要用引號(hào)引起來。您可以使用雙引號(hào)或單引號(hào),但它們必須匹配。

當(dāng)您使用不同的引號(hào)時(shí),會(huì)出現(xiàn)錯(cuò)誤,如下所示:

//Invalidorunexpectedtokenletmessage="Hello';

您可以使用加號(hào)將兩個(gè)或多個(gè)字符串連接為一個(gè)+。不要忘記在下一個(gè)字符串之

前添加空格,否則您將得到一個(gè)沒有空格的字符串!

letmessage="Hello〃+“and〃+“Goodbye!〃;console,log(mes

sage);//Output:HelloandGoodbye!

打印變量值時(shí),還可以console.log()直接在函數(shù)中添加字符串,如下所示:

letmessage="Hello,Dave!z,;console.log(,zThemessageis:〃+

message);//Output:Themessageis:Hello,Dave!

當(dāng)您在一個(gè)句子中有多個(gè)字符串到console,log時(shí),這一點(diǎn)特別有用,如下所

示:

letname=〃John〃;lettopic="JavaScript”;console,log(name+

〃islearning〃+topic+〃today");〃Output:Johnis

learningJavaScripttoday

或者您也可以使用模板字符串格式,它允許您直接在字符串中嵌入變量,如下

所示:

letname="John";lettopic=z,JavaScriptz,;console,log(${name}

islearning${topic}today');//Output:JohnislearningJa

vaScripttoday

要使用模板字符串格式,您需要使用反引號(hào)(')字符而不是引號(hào)來包裹字符串。

使用美元符號(hào)和大括號(hào)將變量嵌入到字符串中,如中所示${variable}。

這樣,JavaScript就知道您正在引用字符串內(nèi)的變量。

當(dāng)您要在一行中打印多個(gè)字符串時(shí),模板字符串格式會(huì)更方便,因?yàn)槟槐厥?/p>

用引號(hào)和連接來斷開字符串。

接下來,字符串也可以表示數(shù)字。您可以將數(shù)字括在引號(hào)中,如下所示:

letscore="10"+"30";console,log(score);〃Output:1030

當(dāng)您用符號(hào)連接兩個(gè)字符串?dāng)?shù)字時(shí)+,JavaScript將連接這兩個(gè)數(shù)字而不是執(zhí)

行算術(shù)加法。

這就是字符串在JavaScript中的工作原理。接下來我們看一下數(shù)字。

JavaScript中的數(shù)字(整數(shù)和浮點(diǎn)數(shù))

數(shù)字?jǐn)?shù)據(jù)類型代表不同類型的數(shù)字。JavaScript中有兩種類型的數(shù)字:

?整數(shù)

?花車

整數(shù)是沒有小數(shù)和分?jǐn)?shù)的整數(shù)。下面,您將看到兩個(gè)整數(shù)x和的示例y:

letx=1;lety=2;console.log(x+y);//Output:3

另一方面,浮點(diǎn)數(shù)是指帶有小數(shù)點(diǎn)的數(shù)字,如下所示:

letf=1.2;letz=2.35;console.log(f+z);//Output:3.55

要?jiǎng)?chuàng)建浮點(diǎn)數(shù),您需要編寫一個(gè)數(shù)字并用于.定義小數(shù)值。

使用數(shù)字類型,您可以執(zhí)行算術(shù)運(yùn)算,例如加法+、減法-、除法/和乘法,*就

像使用計(jì)算器一樣。

JavaScript中的布爾值

trueBoolean是一種表示和值的類型false。

您可以將布爾值視為只能處于兩個(gè)位置之一的電燈開關(guān):開或關(guān)。

編程語言中的布爾值也是如此。當(dāng)JavaScript需要做出決定時(shí)使用它們:向

左還是向右?對還是錯(cuò)?

以下是在JavaScript中創(chuàng)建布爾值的方法:

leton=true;letoff=false;

當(dāng)您需要使用控制流做出決策時(shí),經(jīng)常使用此數(shù)據(jù)類型。您將在第9節(jié)中看到

為什么布爾值在開發(fā)程序時(shí)非常有用。

JavaScript中未定義

未定義是JavaScript中的一種數(shù)據(jù)類型,用于表示尚未分配任何值的變量。

每當(dāng)您聲明變量而不分配任何值時(shí),該undefined值都會(huì)分配給該變量。例

如:

letfirst_name;console.log(first_name);//undefined

您還可以u(píng)ndefined顯式分配給變量,如下所示:

letlast_name=undefined;

但通常不建議這樣做,因?yàn)镴avaScript有另一個(gè)值叫做null,用于將變量標(biāo)

記為空。

JavaScript中的空值

該null值是一種特殊的數(shù)據(jù)類型,表示空值或未知值。以下是將變量指定為

null的方法:

letfirst_name=null;

上面的代碼意味著的值為first_name空或未知。

此時(shí),您可能會(huì)想undefined和之間有什么區(qū)別null?他們似乎有類似的目

的。

你是對的。和undefined都是null不代表任何內(nèi)容的值,而其他編程語言通常

只有一個(gè),那就是null。

在JavaScript中,undefined當(dāng)聲明變量時(shí),該值被保留為默認(rèn)值,而null

意味著您故意為該變量分配一個(gè)“空”值。

當(dāng)您稍后了解第11節(jié)中的函數(shù)時(shí),這種細(xì)微的差異將會(huì)發(fā)揮作用。

現(xiàn)在,請記住JavaScript將其視為undefined“默認(rèn)”空值和null“有意”

空值。

8-類型轉(zhuǎn)換和強(qiáng)制

有時(shí),您可能希望將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型,以便程序按預(yù)期運(yùn)

行。

例如,假設(shè)您需要將字符串轉(zhuǎn)換為整數(shù),以便可以在數(shù)字之間執(zhí)行加法。

如果您將其中一個(gè)數(shù)字作為字符串,JavaScript會(huì)將它們連接在一起而不是相

加:

letx="7";lety=5;console.log(x+y);//75

要正確添加兩個(gè)數(shù)字,您需要將x變量轉(zhuǎn)換為整數(shù)。

將數(shù)據(jù)從一種類型更改為另一種類型也稱為類型轉(zhuǎn)換或類型轉(zhuǎn)換。有3個(gè)函數(shù)

經(jīng)常用于進(jìn)行類型轉(zhuǎn)換:

?Number()

?String()

?Boolean()

顧名思義,這些類型轉(zhuǎn)換函數(shù)將嘗試將您在括號(hào)內(nèi)指定的任何值轉(zhuǎn)換為同名類

型。

要將字符串轉(zhuǎn)換為整數(shù),可以使用以下int()函數(shù):

letx="1";lety=5;//Convertxtointegerx=Number(x

);console.log(x+y);//12

另一方面,該String。函數(shù)將另一種類型的值轉(zhuǎn)換為字符串。如果你輸入

String(true),那么你會(huì)得到"true"。

傳遞與函數(shù)相同類型的值沒有任何效果。它只會(huì)返回相同的值。

類型強(qiáng)制

在JavaScript中,類型強(qiáng)制是一種將一種類型的值隱式轉(zhuǎn)換為另一種類型的

過程。

這是由JavaScript自動(dòng)完成的,因此您的代碼不會(huì)導(dǎo)致錯(cuò)誤。但正如您將在

本節(jié)中看到的,類型強(qiáng)制實(shí)際上可能會(huì)導(dǎo)致程序出現(xiàn)不良行為。

讓我們考慮一下在JavaScript中執(zhí)行anumber和a之間的加法時(shí)會(huì)發(fā)生什

么:string

console,log(1+"1”);

正如您在上一節(jié)中所見,JavaScript會(huì)將數(shù)字視為字符串并將兩個(gè)字母連接為

as而11不是將它們相加(1+1=2)

但您需要知道其他編程語言不會(huì)以相同的方式響應(yīng)。

Ruby或Python等編程語言將通過停止程序并給出錯(cuò)誤作為反饋來做出響應(yīng)。

它將響應(yīng)類似“無法在數(shù)字和字符串之間執(zhí)行加法”的內(nèi)容。

但JavaScript會(huì)看到這一點(diǎn)并說:“我無法按原樣執(zhí)行您請求的操作,但如

果將數(shù)字1轉(zhuǎn)換為a我可以執(zhí)行此操作string,所以我會(huì)這樣做。”

這正是類型強(qiáng)制。JavaScript注意到它不知道如何執(zhí)行您的代碼,但它不會(huì)停

止程序并返回錯(cuò)誤。

相反,它會(huì)在不通知您的情況下更改其中一個(gè)值的數(shù)據(jù)類型。

雖然類型強(qiáng)制不會(huì)導(dǎo)致任何錯(cuò)誤,但輸出實(shí)際上也是您不想要的。

類型強(qiáng)制規(guī)則

類型強(qiáng)制規(guī)則從來沒有在任何地方明確說明過,但我自己通過嘗試各種愚蠢的

代碼確實(shí)找到了一些規(guī)則。

看來JavaScriptstring在發(fā)現(xiàn)不同的數(shù)據(jù)類型時(shí)會(huì)首先將數(shù)據(jù)類型轉(zhuǎn)換為:

1+"1〃//,2]+"1"http://"l,21"true+"1"http://"true

1”

但是當(dāng)你有一個(gè)對象時(shí),值的順序很重要。首先寫入對象總是返回

numeric1:

{a:1}++{a:1}//[objectObject]

“true+{a:1}//,/true[objectObject]”{a:1}+1/

/1

JavaScript可以在布爾類型和數(shù)值類型之間進(jìn)行計(jì)算,因?yàn)椴紶栔祎rue和隱

式具有和false的數(shù)值:10

true+1//1+1=Ifalse+1//0+1=1[1,2]+1//”

1,21〃

類型強(qiáng)制總是隱式執(zhí)行的。當(dāng)您將值分配為變量時(shí),變量類型在操作之外永遠(yuǎn)

不會(huì)改變:

letmyNumber=1;console,log(myNumber+T);//printsllcon

sole,log(myNumber);//stillprintsnumber1andnotstring

您可以嘗試自己找到更多內(nèi)容,但希望您現(xiàn)在已經(jīng)了解強(qiáng)制轉(zhuǎn)換是什么類型以

及它是如何工作的。

為什么應(yīng)該避免類型強(qiáng)制

在談?wù)擃愋蛷?qiáng)制時(shí),JavaScript開發(fā)人員通常分為兩個(gè)陣營:

?那些認(rèn)為這是一個(gè)功能的人

?那些認(rèn)為這是一個(gè)錯(cuò)誤的人

如果您問我,我建議您始終避免在代碼中使用類型強(qiáng)制。

原因是我從未發(fā)現(xiàn)解決方案需要類型強(qiáng)制的問題,并且當(dāng)我需要將一種類型轉(zhuǎn)

換為另一種類型時(shí),最好明確地這樣做:

letprice="50";lettax=5;lettotalPrice=Number(price)

+Number(tax);console,log(totalPrice);

使用顯式類型轉(zhuǎn)換函數(shù)(例如Number。和)String。將使您的代碼清晰透

明。您無需猜測程序中所需的正確數(shù)據(jù)類型。

類型強(qiáng)制是JavaScript中可能會(huì)讓初學(xué)者感到困惑的獨(dú)特功能之一,因此最

好盡早弄清楚。

接下來,我們將學(xué)習(xí)JavaScript運(yùn)算符。

9-JavaScript中的運(yùn)算符

顧名思義,運(yùn)算符是可用于對數(shù)據(jù)執(zhí)行操作的符號(hào)。

+您已經(jīng)看到了一些使用加號(hào)運(yùn)算符連接多個(gè)字符串并將兩個(gè)數(shù)字相加的示例。

當(dāng)然,正如您將在本節(jié)中發(fā)現(xiàn)的那樣,JavaScript有多個(gè)運(yùn)算符。

由于您之前已經(jīng)了解了數(shù)據(jù)類型和轉(zhuǎn)換,因此學(xué)習(xí)運(yùn)算符應(yīng)該相對容易。

算術(shù)運(yùn)算符

算術(shù)運(yùn)算符用于執(zhí)行加法和減法等數(shù)學(xué)運(yùn)算。

這些運(yùn)算符經(jīng)常與數(shù)字?jǐn)?shù)據(jù)類型一起使用。這是一個(gè)例子:

console.log(10-3);//7console.log(2+4);//6

JavaScript中總共有8個(gè)算術(shù)運(yùn)算符:

姓名操作示例意義添加x+y返回兩個(gè)操作數(shù)之間的和減法x-y返回兩個(gè)操

作數(shù)之間的差乘法x*y返回兩個(gè)操作數(shù)之間的乘法求事x**y返回左操作數(shù)

的右操作數(shù)次方的值分配x/y返回左操作數(shù)除以右操作數(shù)的值余x%y返回

左操作數(shù)除以右操作數(shù)后的余數(shù)增量x++返回操作數(shù)加一遞減X一返回操作數(shù)減

這些運(yùn)算符非常簡單,因此您可以自己嘗試。

正如您在上一節(jié)中所看到的,該+運(yùn)算符還可以用于字符串?dāng)?shù)據(jù)以將多個(gè)字符串

合并為一個(gè):

letmessage="Hello"+z/human!zz;console,log(message);//He

llohuman!

當(dāng)您添加數(shù)字和字符串時(shí),JavaScript將執(zhí)行類型強(qiáng)制并將數(shù)字值視為字符串

值:

letsum="Hi"+89;console,log(sum);//Hi89

對字符串使用任何其他算術(shù)運(yùn)算符都會(huì)導(dǎo)致JavaScript返回一個(gè)NaN值。

賦值運(yùn)算符

下一個(gè)要學(xué)習(xí)的運(yùn)算符是賦值運(yùn)算符,它由等號(hào)表示=。

在JavaScript中,賦值運(yùn)算符用于將數(shù)據(jù)或值分配給變量。

您之前已經(jīng)看過一些使用賦值運(yùn)算符的示例,所以這里有一個(gè)提醒:

//Assignthestringvalue'Hello'tothe'message'variable

letmessage="Hello”;〃AssigntheBooleanvaluetruetot

he'on'variableleton=true;

您可能已經(jīng)注意到,等號(hào)在編程中的含義與在數(shù)學(xué)中的含義略有不同,您是對

的!

在編程中,賦值運(yùn)算符不用于比較一個(gè)數(shù)字是否等于另一個(gè)數(shù)字。

如果你想進(jìn)行這種比較,那么你需要使用等于==運(yùn)算符。

賦值運(yùn)算符還可以與算術(shù)運(yùn)算符組合使用,以便您可以從左側(cè)操作數(shù)中添加或

減去值。

賦值運(yùn)算符的類型見下表:

姓名操作示例意義任務(wù)x=yx=y加法作業(yè)x+=yx=x+y減法作業(yè)x-=

yx=x-y乘法作業(yè)x*=yx=x*y分區(qū)分配x/=yx=x/y余數(shù)分配

x%=yx=x%y

接下來,我們來看看比較運(yùn)算符。

比較運(yùn)算符

比較運(yùn)算符用于比較兩個(gè)值。此類別中的運(yùn)算符將返回布爾值:true或

false。

下表顯示了JavaScript中可用的所有比較運(yùn)算符:

姓名操作示例意義平等的x==ytrue如果操作數(shù)相等則返回不等于x!=

ytrue如果操作數(shù)不相等則返回嚴(yán)格等于x===y返回true操作數(shù)是否相等且

類型相同嚴(yán)格不等于x!==ytrue如果操作數(shù)不相等或具有不同類型則返回

比...更棒x>ytrue如果左操作數(shù)大于右操作數(shù)則返回大于或等于x>=

ytrue如果左操作數(shù)大于或等于右操作數(shù)則返回少于x<ytrue如果左操作數(shù)

小于右操作數(shù)則返回小于或等于x<=ytrue如果左操作數(shù)小于或等于右操作數(shù)

則返回

以下是使用這些運(yùn)算符的一些示例:

console,log(9==9);//trueconsole.log(9!=20);//truecons

ole.log(2>10);//falseconsole.log(2<10);//trueconsole.

log(5>=10);//falseconsole.log(10<=10);//true

比較運(yùn)算符也可用于比較字符串,如下所示:

console,log("ABC"=="ABC");//trueconsole.log("ABC"=="abc")

;//falseconsole.log("Z"=="A");//false

字符串比較區(qū)分大小寫,如上面的示例所示。

JavaScript每個(gè)比較運(yùn)算符也有兩個(gè)版本:寬松的和嚴(yán)格的。

在嚴(yán)格模式下,JavaScript將比較類型而不執(zhí)行類型強(qiáng)制。

您需要=在運(yùn)算符中再添加一個(gè)等號(hào),如下所示

console,log("9'==9);//trueconsole.log("9'===9);//fals

econsole,log(true==1);//trueconsole.log(true===1);//f

alse

您應(yīng)該使用嚴(yán)格的比較運(yùn)算符,除非您有特定的理由不這樣做。

邏輯運(yùn)算符

邏輯運(yùn)算符用于檢查一個(gè)或多個(gè)表達(dá)式的結(jié)果是否為True或False。

JavaScript具有三個(gè)邏輯運(yùn)算符:

姓名操作示例意義邏輯與X&&ytrue如果所有操作數(shù)均為則返回true,否則

返回false邏輯或x||ytrue如果操作數(shù)之一為則返回true,否則返回

false邏輯非!x反轉(zhuǎn)結(jié)果:返回trueiffalse,反之亦然

這些運(yùn)算符只能返回布爾值。例如,您可以確定“7是否大于2”和“5是否大

于4”:

console,log(7>2&&.5>4);//true

這些邏輯運(yùn)算符遵循數(shù)理邏輯定律:

1.&&AND運(yùn)算符-如果有任何表達(dá)式返回false,則結(jié)果為false

2.||0R運(yùn)算符-如果有任何表達(dá)式返回true,則結(jié)果為true

3.!N0T運(yùn)算符-對表達(dá)式求反,返回相反值。

我們來做點(diǎn)運(yùn)動(dòng)吧。嘗試在您的計(jì)算機(jī)上運(yùn)行這些語句。你能猜出結(jié)果嗎?

console,log(true&&false);console,log(false|false);console.Io

g(!true);

當(dāng)您需要斷言代碼中滿足特定要求時(shí),這些邏輯運(yùn)算符將派上用場。

typeof

JavaScript允許您使用運(yùn)算符檢查數(shù)據(jù)類型typeof。要使用該運(yùn)算符,您需

要在指定數(shù)據(jù)之前調(diào)用它:

letx=5;console,log(typeofx)//'number'console,log(typeof

“Nathan")//"string'console,log(typeoftrue)//'boolean'

該typeof運(yùn)算符以字符串形式返回?cái)?shù)據(jù)類型?!皵?shù)字”類型代表整數(shù)和浮點(diǎn)類

型,字符串和布爾值代表它們各自的類型。

練習(xí)#3

猜猜這些運(yùn)算符的實(shí)際結(jié)果:

console,log(19%3);console,log(10==3);console,log(10!=="10

zz);console,log(2<"10");console.log("5">2);console.log((false

&&true)||false);

10-JavaScript數(shù)組

數(shù)組是一種對象數(shù)據(jù)類型,可用于保存多個(gè)值。數(shù)組可以是字符串、數(shù)字、布

爾值、對象或它們的組合的列表。

要?jiǎng)?chuàng)建數(shù)組,您需要使用方括號(hào)口并使用逗號(hào)分隔各個(gè)項(xiàng)目。

創(chuàng)建字符串列表的方法如下:

letbirds=VOwl','Eagle','Parrot?'Falcon'];

您可以將數(shù)組視為項(xiàng)目列表,每個(gè)項(xiàng)目都存儲(chǔ)在一個(gè)儲(chǔ)物柜隔間中:

ILLUS

letbirds=。

T

'Owl'

編輯

您還可以聲明一個(gè)沒有任何值的空數(shù)組:

letbirds=[];

數(shù)組還可以包含如下值的混合:

letmixedArray=["Bird",true,10,5.17]

上面的數(shù)組包含一個(gè)字符串、一個(gè)布爾值、一個(gè)整數(shù)和一個(gè)浮點(diǎn)數(shù)。

數(shù)組索引位置

JavaScript會(huì)記住數(shù)組中元素的位置。元素的位置也稱為索引號(hào)。

回到儲(chǔ)物柜的例子,您可以將索引號(hào)視為儲(chǔ)物柜號(hào)。索引號(hào)從0以下開始:

ARRA

o

J

letbirds=。

?

'Owl'

編輯

[x]要訪問或更改數(shù)組的值,您需要在數(shù)組名稱旁邊添加方括號(hào)符號(hào),其中X是

該元素的索引號(hào)。這是一個(gè)例子:

//AccessthefirstelementinthearraymyArray[0];//Access

thesecondelementinthearraymyArray[1];

假設(shè)您想從數(shù)組中打印字符串“Owl”birdso以下是您可以如何做到這一

點(diǎn)。

letbirds=['Owl','Eagle','Parrot',,Falcon,];console.log(bi

rds[0]);//Owlconsole,log(birds[1]);//Eagle

就這樣吧。您需要鍵入數(shù)組的名稱,然后鍵入用方括號(hào)括起來的索引號(hào)。

您還可以使用賦值運(yùn)算符將新值分配給特定索引。

讓我們將"Parrot"替換為"Vulture":

letbirds=['Owl','Eagle',5Parrot*,'Falcon'];birds[2]='

Vulture,;console,log(birds);//['Owl','Eagle','Vulture','Falco

n]

由于數(shù)組索引從零開始,因此值“Parrot”存儲(chǔ)在索引2而不是3處。

數(shù)組操作的特殊方法

由于數(shù)組是一個(gè)對象,因此您可以調(diào)用JavaScript提供的方法來操作數(shù)組

值。

例如,您可以使用該push。方法將一個(gè)項(xiàng)目添加到數(shù)組的末尾:

letbirds=['Owl',JEagle,];birds.push(,Sparrow,);console,log(bi

rds);//['Owl','Eagle','Sparrow']

調(diào)用的另一個(gè)方法pop()可用于從數(shù)組末尾刪除項(xiàng)目:

letbirds=['Owl','Eagle',JSparrow,];birds.popO;console.log(

birds);//['Owl','Eagle']

該unshift()方法可用于從索引0處的前面添加一個(gè)項(xiàng)目:

letfishes=['Salmon','Goldfish','Tuna'];fishes,unshift('Sard

ine,);console.log(fishes);//['Sardine','Salmon','Goldfish','T

una,]

另一方面,該shift。方法可用于從索引0中刪除項(xiàng)目:

letfishes=['Salmon",'Goldfish",,Tuna'];fishes,shift();conso

le.log(fishes);//[,Goldfish','Tuna']

該indexOf()方法可用于查找并返回?cái)?shù)組中項(xiàng)目的索引。

-1當(dāng)在數(shù)組中找不到該項(xiàng)目時(shí),該方法將返回:

letfishes=['Salmon",'Goldfish","Tuna'];letpos=fishes.

indexOfCTuna");console,log(pos);//2

要獲取數(shù)組的大小,您可以訪問該length屬性:

letfishes=[,Salmon",'Goldfish','Tuna)];console,log(fishes.1

ength);//3

請注意,我們不會(huì)在length上面的關(guān)鍵字旁邊添加括號(hào)。這是因?yàn)閘ength是

數(shù)組對象的屬性而不是方法。

我們將在接下來的教程中了解有關(guān)對象的更多信息。

練習(xí)#4

創(chuàng)建一個(gè)名為colors包含“紅色”、“綠色”和“藍(lán)色”顏色的數(shù)組。

首先,在數(shù)組的最后一個(gè)索引后添加“黑色”顏色。然后打印數(shù)組。

接下來,刪除值“紅色”并交換“綠色”和“藍(lán)色”的位置。打印數(shù)組。

最后,在數(shù)組的第一個(gè)索引上添加顏色“黃色”,然后打印數(shù)組。

結(jié)果輸出如下:

['red",'green",'blue",'black']['blue",'green",'black)

][,yellow','blue",'green','black']

您需要使用本節(jié)中介紹的方法修改原始數(shù)組。

11-JavaScript中的控制流(條件)

到目前為止,您編寫的JavaScript代碼都是從上到下逐行執(zhí)行的。但是,如

果您只想在滿足特定條件時(shí)運(yùn)行某些代碼行怎么辦?

計(jì)算機(jī)程序通常需要考慮程序執(zhí)行期間可能出現(xiàn)的許多不同條件。

這類似于人類在生活中做出決定的方式。例如,您有錢去日本度假嗎?如果是

的話,就去吧。如果沒有,那就多存點(diǎn)錢吧!

這就是控制流的用武之地。控制流是編程語言中的一項(xiàng)功能,允許您根據(jù)可能

出現(xiàn)的不同條件有選擇地運(yùn)行特定代碼。

使用控制流允許您根據(jù)程序中存在的條件定義程序可以采用的多個(gè)路徑。

JavaScript中常用的控制流有兩種類型:條件和循環(huán)。

本節(jié)將重點(diǎn)介紹條件語句,例如:

1.if...else陳述

2.switch...case陳述

您將在下一節(jié)中了解循環(huán)語句。

if...else語句

該if語句允許您創(chuàng)建一個(gè)僅在滿足特定條件時(shí)運(yùn)行的程序。

該if語句的語法如下:

if(condition){

//codetoexecuteifconditionistrue}

讓我們看一個(gè)例子。假設(shè)你想去度假,需要5000美元。

使用該if語句,您可以通過以下方式檢查您是否有足夠的余額:

letbalance=7000;if(balance>5000){

console.log(z,Youhavethemoneyforthistrip.Let,sgo!

);)

運(yùn)行上面的代碼一次,您將看到終端上打印的字符串。

balance現(xiàn)在更改to的值3000,您將不會(huì)得到任何響應(yīng)。

發(fā)生這種情況是因?yàn)檎Z句內(nèi)的代碼if僅在條件為時(shí)才執(zhí)行trueo

在該if語句之后,您可以在其下面再編寫一行代碼,如下所示:

letbalance=7000;if(balance>5000){

console.log(z/Youhavethemoneyforthistrip.Let'sgo!

);}console.log(//Theend!”);

console.log()無論您為變量分配什么值,上面的第二個(gè)調(diào)用都會(huì)執(zhí)行

balance0

如果您希望它僅在滿足條件時(shí)執(zhí)行if,則也將該行放在大括號(hào)內(nèi):

letbalance=7000;if(balance>5000){

console,log("Youhavethemoneyforthistrip.Let,sgo!”

);

console.log(,zTheend!");}

接下來,假設(shè)您只需要在if不滿足語句條件時(shí)運(yùn)行一些代碼。

這就是else語句的用武之地。語句僅在語句未滿足else時(shí)才用于運(yùn)行代碼。

if

這是一個(gè)例子:

letbalance=7000;if(balance>5000){

console.log(,zYouhavethemoneyforthistrip.Let,sgo!”

);}else(

console.log(z,Sorry,notenoughmoney.Savemore!,z);}console,

log("Theend!");

現(xiàn)在將的值更改balance為小于5000,您將觸發(fā)else示例中的塊。

JavaScript還具有elseif語句,允許您編寫另一個(gè)條件來檢查if語句條件

是否不滿足。

考慮下面的例子:

letbalance=7000;if(balance>5000){

console.log(,zYouhavethemoneyforthistrip.Let*sgo!”

);}elseif(balance>3000){

console,log("Youonlyhaveenoughmoneyforastaycation")

;}else{

console.log(z,Sorry,notenoughmoney.Savemore!/z);}console,

log("Theend!,z);

當(dāng)balance金額小于時(shí)5000,elseif報(bào)表將檢查是否balance大于3000o如

果是這樣,程序?qū)⒗^續(xù)建議您在家度假。

您可以根據(jù)需要編寫任意數(shù)量的elseif語句,并且僅當(dāng)前一條語句不滿足時(shí)

才會(huì)執(zhí)行每一條語句。

這些語句一起if..else..elseif允許您根據(jù)程序面臨的條件執(zhí)行不同的代碼

塊。

switch...case語句

該switch語句是核心JavaScript語法的一部分,可讓您控制代碼的執(zhí)行流

程。

它通常被認(rèn)為是語句的替代方案if..else,可以為您提供更具可讀性的代碼,

尤其是當(dāng)您有許多不同的條件需要評(píng)估時(shí)。

這是工作聲明的示例switch。我將解釋下面的代碼:

letage=15;switch(age){

case10:

console.log(z,Ageis10〃);

break;

case20:

console.log(〃Ageis20〃);

break;

default:

console,log(z,Ageisneither10or20〃);}

首先,您需要將要由語句計(jì)算的表達(dá)式傳遞switch到括號(hào)中。在示例中,age

變量作為求值的參數(shù)傳遞。

然后,您需要編寫語句將嘗試與表達(dá)式匹配case的值。switch該case值后面

緊跟一個(gè)冒號(hào)(:)以標(biāo)記case塊的開始:

case"apple〃:

case請記住要與表達(dá)式匹配的值的數(shù)據(jù)類型。如果你想匹配astring,那么

你需要放置astringo當(dāng)您有a作為參數(shù)但為case放置a時(shí),switch語

句不會(huì)執(zhí)行類型強(qiáng)制:numberstring

switch(1){

case1:

console,log("HelloWorld!z,);

break;}

數(shù)字表達(dá)式與字符串大小寫值不匹配,因此JavaScript不會(huì)將任何內(nèi)容記錄

到控制臺(tái)。

布爾值也會(huì)發(fā)生同樣的情況。該數(shù)字1不會(huì)被強(qiáng)制,因?yàn)閠rue并且該數(shù)字0不

會(huì)被強(qiáng)制為false:

switch(0){

casetrue:

console,log("HelloTrue!”);

break;

casefalse:

console,log(,zBonjourFalse!,z);

break;

default:

console.logC^Nomatchingcase");}

switch語句體

語句主體switch由三個(gè)關(guān)鍵字組成:

?case用于啟動(dòng)case塊的關(guān)鍵字

?break用于停止switch語句運(yùn)行下一個(gè)的關(guān)鍵字case

?default未找到匹配時(shí)運(yùn)行一段代碼的關(guān)鍵字case。

當(dāng)您的表達(dá)式找到匹配的Incase,JavaScript將執(zhí)行該case語句后面的代

碼,直到找到break關(guān)鍵字。如果省略關(guān)鍵字break,則代碼將繼續(xù)執(zhí)行到下

一個(gè)塊。

看一下下面的例子:

switch(0){

case1:

console.log("Valueisone");

case0:

console.log("Valueiszero");

default:

console.log(z,Nomatchingcase");}

當(dāng)您執(zhí)行上面的代碼時(shí),JavaScript將打印以下日志:

>“Valueiszero〃>“Nomatchingcase”

這是因?yàn)槿绻麤]有break關(guān)鍵字,switch即使已經(jīng)找到匹配的情況,也會(huì)繼續(xù)

根據(jù)剩余的情況評(píng)估表達(dá)式。

您的switch評(píng)估可能會(huì)匹配多個(gè)案例,因此break關(guān)鍵字通常用于在找到匹

配項(xiàng)后退出流程。

最后,您還可以將表達(dá)式作為case值:

switch(20){

case10+10:

console.log("valueistwenty");

break;}

但您需要記住,case塊的值必須與參數(shù)完全匹配switcho

使用該語句時(shí)最常見的錯(cuò)誤之一switch是人們認(rèn)為case價(jià)值被評(píng)估為true或

false。

以下case塊在語句中不起作用switch:

letage=5;switch(age){

caseage<10:

console.log(z,Valueislessthanten");

break;

caseage<20:

console,log("Valueislessthantwenty");

break;

default:

console.log(z,Valueistwentyormore");}

if您需要記住和評(píng)估之間的差異case:

?if當(dāng)測試條件評(píng)估為時(shí),塊將被執(zhí)行true

?case當(dāng)測試條件與給定參數(shù)完全匹配時(shí),塊將被執(zhí)行switch

Switch語句用例

if當(dāng)你考慮和之間的經(jīng)驗(yàn)法則switch是:

switch僅當(dāng)代碼編寫起來很麻煩時(shí)才使用if

例如,假設(shè)您想根據(jù)工作日編號(hào)編寫工作日名稱

您可以這樣寫:

letweekdayNumber=1;if(weekdayNumber===0){

console.log(,,Sundayz,);}elseif(weekdayNumber===1){

console.log(,,Mondayz,);}elseif(weekdayNumber===2){

console,log("Tuesday");}elseif(weekdayNumber===3){

console,log("Wednesday");}elseif(weekdayNumb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論