午夜大片爽爽爽免费影院丨色综合色综合久久综合频道88丨日韩人妻无码中文字幕视频丨一本无码久本草在线中文字幕dvd丨国产午夜亚洲精品国产成人

js中的分號

2020/11/12 12:16:23   閱讀:3380    發布者:3380
js中語句末尾可以不加分號,

很多時候在做練習或寫幾個頁面時,我都是不會加的。雖然知道加了會好一點。但就是覺得很敲一句就要多按一次分號鍵(;)來加分號,而不加也不怎么樣,然后就不想加了。

也聽說在對js壓縮于,會自動給語句加分號。很多插件的js的首句前面都會有個;分號,是用來避免當如果合并如下js文件如以下情況時,解釋器可能會出錯。

//代碼塊A

var a = 10;
var b = 5;

var c = a + b

//代碼塊B

('x' + 'y').toString()
 報錯; 在('x' + 'y').toString() 前面加上分號就好了。所以,分號是一件多么重要的事情。



var x = 'javascript'; //javascript
x = "hello"; // hello
x = 555; //555
x = null; //null
x = a; //a is not defined
x = true; //true
對于數字是直接賦值的,因為它沒有多樣性,數字就是數字。但是對于值是英文的情況就很難區分了,因為在編程語言中,英文既可能是字符串,也可能是引用的另外一個變量。因此如何區分變量和字符串就顯得格外重要,編程語言常常將字符串用引號括起來,從而達到區分變量和字符串的作用。有些語言比如java,它們還區分單引號和雙引號,單引號括起來的是一個字符,而雙引號括起來的才是字符串。但javascript并不區分字符和字符串,而是把它們都當作字符串,因此在javascript中單引號和雙引號并沒有什么區別。

雖然通過引號可以用來區分變量和字符串,但值往往也可能是一個關鍵字,比如上面那段代碼我將x賦值為null,那么這些編程語言又是如何區分變量和關鍵字的呢?
null = 123;
console.log(null); //Uncaught ReferenceError: Invalid left-hand side in assignment
undefined = 456;
console.log(undefined); //undefined
以上我給null和undefined分別賦給了另外一個值,其結果,給null賦值報錯了,給undefined賦值雖然沒有報錯,但也沒有成功。也許對于null和undefined來說,它們就是值。而變量則是尋找值。我們說javascript是如何區分變量和關鍵字,最終或許就變成了javascript是如何區分變量和值的。
在一些JS插件中,經常會看到類似下面這樣的一行代碼

;(function(){
 .........
})();
在代碼的最前面有一個分號,那么這個分號是干什么用的呢?

我們知道一個分號代表了一段代碼的結束,但問題是javascript允許你不寫分號,這樣就出現了一個問題,代碼的結束與否不是你來決定的而是由程序來決定的,而程序也不是萬能的,往往它只是走的某個規則,而如果你寫的這段代碼和它的規則不符,最終的結果就有些不如人意了。

以下是javascript對省略分號的解析規則

var a
=
1 + 2
console.log(a) //3
javascript解析器會將以上代碼解析成

var a = 1 + 2;
console.log(a); //3
如果javascript不給2后面添加分號將會無法解析下去,也可以這么說,如果遇到無法解析下去則javascript解析器會嘗試給其添加一個分號,如果還是解析不了則報錯。又比如下面這一段代碼

var a = 10;
var b = 5;

var c = a + b
(a + b).toString()

// b is not a function
它說b不是一個函數,也就是說以上這段代碼很有可能解析成了下面這段代碼

var a = 10;
var b = 5;

var c = a + b(a + b).toString();
它把()當成了函數調用。也可以理解為javascript解析器會盡可能多的去匹配,但也有幾個例外,它們是retrun、break、continue,當javascript解析器解析到這幾個關鍵字時,它不會把換行后的內容當成是自身的,而是直接在換行之前添加分號,不妨看看下面這段代碼

function test(){
  return 
  123;
}

console.log(test()); //undefined
它并沒有返回123,也就是說它直接在retrun后面加了分號。
因此不要把分號單單認為只是用來結束某段代碼,它還可以用來隔離某段代碼和別人劃清界限。
主站蜘蛛池模板: 亚洲s码欧洲m码国产av| 伊人久久大香线蕉无码不卡| 国产我和子的与子乱视频| 久久久日韩精品一区二区| 中文字幕久热精品视频在线| 少妇无码太爽了在线播放| 四虎永久在线精品8848a| 国产精品自产拍在线观看| 97人洗澡从澡人人爽人人模| 色噜噜狠狠一区二区三区果冻| 国产亚洲精品久久av| 久久se精品一区精品二区国产| 国产av久久久久精东av| 国产精品无码综合区| 欧美另类精品xxxx| 久精品国产欧美亚洲色aⅴ大片| 亚洲男人av天堂午夜在| 高h纯肉大尺度调教play| 久久国产免费直播| 人人爽久久久噜噜噜婷婷| 国产麻豆精品久久一二三| 国产成人无码a区在线观看视频免费 | 欧美性生交大片18禁止| 扒开双腿猛进入喷水高潮视频| 天天做天天爱天天做天天吃中| 国产农村妇女野外牲交视频| 亚洲熟妇无码av在线播放| 亚洲人成电影网站 久久影视| 亚洲精品色情app在线下载观看| 亚洲 欧美 国产 67194| 亚洲一卡二新区乱码绿踪林| 大屁股大乳丰满人妻| 国产亚洲精品久久久久久大师| 国产女人高潮叫床免费视频| 国产无限次数成版人视频在线| 欧美精品国产制服第一页| 亚洲熟熟妇xxxx| 欧美人牲交a欧美精区日韩| 久久aⅴ人妻少妇嫩草影院| 欧美人与动牲交a免费| 国产一区二区三区怡红院|