国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Javascript,到底要不要寫分號(hào)?

這篇具有很好參考價(jià)值的文章主要介紹了Javascript,到底要不要寫分號(hào)?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

小白隨機(jī)在互聯(lián)網(wǎng)上亂丟一些賽博垃圾,還望撥冗批評(píng)斧正。

?要不要加分號(hào)?

? ? ? ? 先說結(jié)論:“不引起程序出錯(cuò)的前提下,加不加都可以,按自身習(xí)慣來?!?

為什么JS可以不加分號(hào)?

?????????實(shí)際上,行尾使用分號(hào)的風(fēng)格來自于Java,也來自于C和C++,這一設(shè)計(jì)最初是為了降低編譯器的工作負(fù)擔(dān)。

????????但是,從今天的角度來看,行尾使用分號(hào),其實(shí)是一種語(yǔ)法噪音,恰好JavaScript語(yǔ)言有提供了相對(duì)可用的分號(hào)自動(dòng)補(bǔ)全規(guī)則,所以,很多JavaScript程序員都是傾向于不加分號(hào)的。

? ? ? ? 由于我是一個(gè)大二的萌新,此前只接觸過C語(yǔ)言,所以個(gè)人編碼習(xí)慣還是會(huì)在能加分號(hào)的地方都加上分號(hào),目前為止這種編碼習(xí)慣沒有帶來過什么麻煩。那么,為什么JS不像C語(yǔ)言一樣非要老老實(shí)實(shí)加分號(hào)呢?

自動(dòng)插入分號(hào)規(guī)則

自動(dòng)插入分號(hào)規(guī)則獨(dú)立于所有的語(yǔ)法產(chǎn)生式定義,規(guī)則有三條:

有換行符,且下一個(gè)符號(hào)是不符合語(yǔ)法的,那么就嘗試插入分號(hào)。
有換行符,且語(yǔ)法中規(guī)定此處不能有換行符,那么就自動(dòng)插入分號(hào)。
源代碼結(jié)束處,不能形成完整的腳本或者模塊結(jié)構(gòu),那么就自動(dòng)插入換行符。

這樣描述是比較難以理解的,我們一起看一些實(shí)際的例子進(jìn)行分析。

let a = 1
void function(a){
	console.info(a);
}(a)

在這個(gè)例子中,第一行結(jié)尾處有換行符,接下來 void 關(guān)鍵字接在 1 之后是不合法的,這里命中了我們的第一條規(guī)則,因此會(huì)在 void 前插入換行符。

var a = 1,b = 1, c = 1;
a
++
b
++
c

這也是個(gè)著名的例子,我們看到第二行的a之后,有換行符,后面遇到了++運(yùn)算符,a后面跟++是合法的語(yǔ)法,但是事實(shí)上,在編譯的時(shí)候,這里的 a 的后面會(huì)插入一個(gè)分號(hào)。所以這段代碼最終的結(jié)果,b 和 c 都變成了2,而 a 還是1,引發(fā)了錯(cuò)誤。那么,什么情況下JS不加分號(hào)會(huì)出錯(cuò)呢?

什么情況下不加分號(hào)會(huì)出錯(cuò)

1. 小括號(hào)開頭的前一條語(yǔ)句

Javascript,到底要不要寫分號(hào)?,javascript,開發(fā)語(yǔ)言,前端

想說的一點(diǎn)是,為什么匿名函數(shù)前面要加分號(hào);

假設(shè):如果不加分號(hào),程序最終編譯成這樣子:

var a = 4 
console.log(a)(function () {...}

結(jié)果就會(huì)報(bào)錯(cuò):Uncaught TypeError: console.log(...) is not a function

Why?

那是因?yàn)槟涿瘮?shù)是以括號(hào)()為開頭,對(duì)于程序括號(hào)()代表函數(shù)執(zhí)行,那前面應(yīng)該就有函數(shù)名,編譯后空格去掉就console.log(a)(...),自然報(bào)錯(cuò)。

這也是為什么JS語(yǔ)句后要加分號(hào)的原因。

那我不想在每條語(yǔ)句(console.log(a))后都加分號(hào)怎么辦?

就需要在匿名函數(shù)前加分號(hào),后面不加就前面加。

再來一條例子看看:Javascript,到底要不要寫分號(hào)?,javascript,開發(fā)語(yǔ)言,前端這就是小括號(hào)開頭的前一條語(yǔ)句要加分號(hào)。(匿名函數(shù))

2. 中方括號(hào)開頭的前一條語(yǔ)句

當(dāng)然,解決方法就是在行首加分號(hào)。

3.?以 "(" ,"[" , "/" , "+" , "-" 開始的語(yǔ)句

以 "(" ,"[" , "/" , "+" , "-" 開始的語(yǔ)句,極有可能和前面一條語(yǔ)句一起解析。

如果前一條語(yǔ)句無法和后一條語(yǔ)句合并解析,JavaScript才會(huì)在第一條語(yǔ)句后插入分號(hào),這是通用規(guī)則。

但是,有2個(gè)例外,

3.1 return ,break和continue

如果涉及 return 、break、continue 時(shí),如果這三個(gè)關(guān)鍵字后緊跟換行,則該關(guān)鍵字后一定會(huì)插入分號(hào);

return true

一定會(huì)被解析成

return; true;

這顯然違背了代碼的本意。

3.2 有 ”++“ 或 ”--“運(yùn)算符時(shí)

如果涉及 ”++“ ,”--“運(yùn)算符的時(shí)候,這些表達(dá)式可以作為表達(dá)式的前綴,也可以作為表達(dá)式的后綴。

如果將其作為表達(dá)式的后綴的話,它和表達(dá)式應(yīng)該在同一行,否則,JavaScript會(huì)在行末添加添加分號(hào),并且 ”++“ "--"會(huì)被作為下一句的前綴操作符與下一句一起解析。

x

++

y

這段代碼解析為:

x; ++y;

看完這么多,我還是決定繼續(xù)老老實(shí)實(shí)地給JS加分號(hào)了。。。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-807930.html

到了這里,關(guān)于Javascript,到底要不要寫分號(hào)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 建站系列(五)--- 前端開發(fā)語(yǔ)言之HTML、CSS、JavaScript

    建站系列(五)--- 前端開發(fā)語(yǔ)言之HTML、CSS、JavaScript

    建站系列(一)— 網(wǎng)站基本常識(shí) 建站系列(二)— 域名、IP地址、URL、端口詳解 建站系列(三)— 網(wǎng)絡(luò)協(xié)議 建站系列(四)— Web服務(wù)器之Apache、Nginx 建站系列(五)— 前端開發(fā)語(yǔ)言之HTML、CSS、JavaScript 建站系列(六)— 后端開發(fā)語(yǔ)言 建站系列(七)— 常用前后端框架

    2024年02月09日
    瀏覽(27)
  • 到底要不要,手摸手指導(dǎo)下屬?

    leader的 核心職責(zé) 是: (1)對(duì)上 ,完成老板交予的任務(wù); (2)對(duì)同事 ,為隊(duì)友賦能; (3)對(duì)下 ,為下屬搭舞臺(tái)唱戲,幫助下屬解決問題,幫助下屬成長(zhǎng)和提升; 其中,幫助下屬成長(zhǎng)和提升,指導(dǎo)與培養(yǎng)員工,是非常重要的一塊,新晉管理者心中可能會(huì)有這樣 一些疑問

    2024年02月05日
    瀏覽(22)
  • 銀行 IT 架構(gòu)到底要不要云化?

    【摘要】 銀行到底是繼續(xù)采用集中式架構(gòu)還是全部更換成分布式架構(gòu),是繼續(xù)保持現(xiàn)有傳統(tǒng)架構(gòu)還是改造成基于云計(jì)算的全新架構(gòu)?本文用較長(zhǎng)篇幅全面分析了集中式架構(gòu)(非云化架構(gòu))和分布式架構(gòu)(云化架構(gòu))的特點(diǎn)、優(yōu)缺點(diǎn),并提出了轉(zhuǎn)型思路,從技術(shù)和管理兩個(gè)角度

    2024年02月21日
    瀏覽(19)
  • (自己動(dòng)手開發(fā)自己的語(yǔ)言練手級(jí)應(yīng)用)JSON(JavaScript Object Notation) 產(chǎn)生式(BNF)

    ?寫自己的開發(fā)語(yǔ)言時(shí),很多人都會(huì)拿JSON當(dāng)?shù)谝粋€(gè)練習(xí)對(duì)象 開源net json FJSON 解析工具 https://dbrwe.blog.csdn.net/article/details/107611540?spm=1001.2014.3001.5502 以上是JSON的簡(jiǎn)化產(chǎn)生式表示形式。其中, json 是最頂層的規(guī)則,可以是一個(gè)對(duì)象或一個(gè)數(shù)組。 object 表示一個(gè)對(duì)象,由一對(duì)大括號(hào)

    2024年02月10日
    瀏覽(28)
  • 手機(jī)總是提醒系統(tǒng)更新,到底要不要更新呢?

    不知道你們會(huì)不會(huì)和我一樣,在收到手機(jī)系統(tǒng)更新的通知時(shí),猶豫要不要更新??更新完了手機(jī)會(huì)變卡頓嗎??每次都要更新嗎?怎樣才能關(guān)閉它呢? 0 1 手機(jī)系統(tǒng)更新啥內(nèi)容? 手機(jī)系統(tǒng)更新可以分為大版本更新和小版本更新。 (1) 大版本更新 如iOS15升級(jí)為iOS16,MIUI12升級(jí)為MIUI13,大

    2024年02月07日
    瀏覽(25)
  • 大型醫(yī)院云HIS系統(tǒng):采用前后端分離架構(gòu),前端由Angular語(yǔ)言、JavaScript開發(fā);后端使用Java語(yǔ)言開發(fā) 融合B/S版電子病歷系統(tǒng)

    大型醫(yī)院云HIS系統(tǒng):采用前后端分離架構(gòu),前端由Angular語(yǔ)言、JavaScript開發(fā);后端使用Java語(yǔ)言開發(fā) 融合B/S版電子病歷系統(tǒng)

    一套醫(yī)院云his系統(tǒng)源碼 采用前后端分離架構(gòu),前端由Angular語(yǔ)言、JavaScript開發(fā);后端使用Java語(yǔ)言開發(fā)。融合B/S版電子病歷系統(tǒng),支持電子病歷四級(jí),HIS與電子病歷系統(tǒng)均擁有自主知識(shí)產(chǎn)權(quán)。 文末卡片獲取聯(lián)系! 基于云計(jì)算技術(shù)的B/S架構(gòu)的醫(yī)院管理系統(tǒng)(簡(jiǎn)稱云HIS),采用前后

    2024年02月03日
    瀏覽(31)
  • 軟件測(cè)試外包到底要不要去?三年真實(shí)外包感受告訴你

    不知不覺已經(jīng)從事軟件測(cè)試三年了,從畢業(yè)到進(jìn)入外包公司外包給微軟做軟件測(cè)試,到現(xiàn)在加入著名的外企。三年的時(shí)間過得真快。長(zhǎng)期的測(cè)試工作也讓我對(duì)軟件測(cè)試有了比較深入的認(rèn)識(shí)。我就跟大家分享一下我做測(cè)試的心得,如有錯(cuò)誤還請(qǐng)批評(píng)改正。 什么是軟件測(cè)試外包

    2024年02月06日
    瀏覽(23)
  • JavaScript高級(jí)技巧:深入探索JavaScript語(yǔ)言的高級(jí)特性和用法

    當(dāng)我們談?wù)揓avaScript高級(jí)技巧時(shí),以下是一些示例來說明這些概念: 閉包(Closures): 在上面的例子中, innerFunction 是一個(gè)閉包,它可以訪問外部函數(shù) outerFunction 中的 outerVariable 變量,即使在外部函數(shù)執(zhí)行結(jié)束后也可以。 高階函數(shù)(Higher-Order Functions): 在上面的例子中,

    2024年02月08日
    瀏覽(33)
  • 【JavaScript】JavaScript 簡(jiǎn)介 ④ ( 解釋型語(yǔ)言 和 編譯型語(yǔ)言 | 計(jì)算機(jī)程序本質(zhì) | 編譯器 和 解釋器 )

    【JavaScript】JavaScript 簡(jiǎn)介 ④ ( 解釋型語(yǔ)言 和 編譯型語(yǔ)言 | 計(jì)算機(jī)程序本質(zhì) | 編譯器 和 解釋器 )

    計(jì)算機(jī) 的 程序 是在 CPU 上執(zhí)行的 , CPU 上執(zhí)行的只有匹配該 CPU 的機(jī)器碼指令 , 不同類型的 CPU 執(zhí)行的 機(jī)器碼指令 格式不同 , X86 和 ARM 執(zhí)行的 機(jī)器碼 指令格式是不同的 ; 機(jī)器碼指令 是 二進(jìn)制的 , 所有在 計(jì)算機(jī) 上執(zhí)行的程序 , 都是 若干 二進(jìn)制機(jī)器碼 的集合 ; 計(jì)算機(jī) 只能執(zhí)

    2024年03月22日
    瀏覽(32)
  • 【JavaScript】3.4 JavaScript在現(xiàn)代前端開發(fā)中的應(yīng)用

    【JavaScript】3.4 JavaScript在現(xiàn)代前端開發(fā)中的應(yīng)用

    JavaScript 是現(xiàn)代前端開發(fā)的核心。無論是交互效果,還是復(fù)雜的前端應(yīng)用,JavaScript 都發(fā)揮著關(guān)鍵作用。在本章節(jié)中,我們將探討 JavaScript 在現(xiàn)代前端開發(fā)中的應(yīng)用,包括如何使用 JavaScript 來處理用戶交互、動(dòng)態(tài)內(nèi)容、前端路由、API 請(qǐng)求等。 JavaScript 是處理用戶交互的主要工

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包