版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年版注塑設(shè)備售后服務(wù)與技術(shù)支持合同范本3篇
- 2025年個(gè)人砌磚工程承包建筑材料采購與質(zhì)量監(jiān)管合同2篇
- 2025年度美容院品牌形象設(shè)計(jì)及推廣合同8篇
- 二零二五年度成都離婚協(xié)議公證法律咨詢及服務(wù)合同3篇
- 二零二四年度醫(yī)療機(jī)構(gòu)醫(yī)療器械質(zhì)量控制合同3篇
- 二零二五年度果園承包與農(nóng)業(yè)廢棄物資源化利用合同7篇
- 二零二五版美團(tuán)外賣商家知識(shí)產(chǎn)權(quán)保護(hù)與使用合同4篇
- 二零二五年度程序員入職知識(shí)產(chǎn)權(quán)保護(hù)合同4篇
- 2025年度個(gè)人知識(shí)產(chǎn)權(quán)保護(hù)合同范本全新解讀4篇
- 2025年度旅游度假村裝修設(shè)計(jì)與施工合同2篇
- 2024年山東省泰安市高考物理一模試卷(含詳細(xì)答案解析)
- 護(hù)理指南手術(shù)器械臺(tái)擺放
- 腫瘤患者管理
- 2025年中國航空部附件維修行業(yè)市場競爭格局、行業(yè)政策及需求規(guī)模預(yù)測報(bào)告
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢白皮書
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 零部件測繪與 CAD成圖技術(shù)(中職組)沖壓機(jī)任務(wù)書
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫380題(含答案)
- 高低壓配電柜產(chǎn)品營銷計(jì)劃書
評(píng)論
0/150
提交評(píng)論