国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Javascript中的函數聲明與函數表達式(奇技淫巧)

2019-11-20 23:54:50
字體:
來源:轉載
供稿:網友
舉一個例子:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

試一下就知道這段代碼的意思就是聲明一個函數,然后立刻執行,因為Javascript中的變量作用域是基于函數的,所以這樣可以避免變量污染,但這里的位運算符“~”乍一看讓人摸不到頭腦,如果去掉它再運行則會報錯:SyntaxError。

在闡述為什么之前,讓我們先來明確Javascript中的兩個概念:函數聲明和函數表達式:

先來看看什么樣的是函數聲明:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

再來看看什么樣的是函數表達式:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

現在回頭看看文章開頭的問題,為什么去掉位操作符“~”后運行會報錯,這是因為從語法解析的角度看,Javascript不允許在函數聲明的后面直接使用小括號,而函數表達式則沒有這個限制,通過在函數聲明前面加上一個“~”操作符,就可以讓語法解析器把后面看成是函數表達式,同樣的,在函數聲明前面加上“!,+,-”等操作符也是可行的。

那我們為什么不使用下面這種函數表達式的方式呢?


[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

雖然從語法解析的角度看沒有問題,但是上面的代碼存在弊端,它引入了一個變量,可能會污染現有的運行環境,帶來潛在的問題。

使用位操作符“~”的方法多少顯得有點奇技淫巧,其實把函數聲明用小括號套起來更易讀:


[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

弄明白了原理,不管遇到什么寫法,都不會再丈二和尚摸不著頭腦了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜平县| 富宁县| 镇康县| 十堰市| 永和县| 景德镇市| 葫芦岛市| 宁晋县| 安庆市| 祁阳县| 宜君县| 明星| 乌审旗| 宁海县| 余江县| 宜城市| 宣恩县| 荆门市| 东乡族自治县| 万州区| 浙江省| 锡林郭勒盟| 霍城县| 洪江市| 电白县| 雷州市| 安康市| 齐齐哈尔市| 镇原县| 平遥县| 云安县| 宁阳县| 集贤县| 东安县| 灌云县| 霍州市| 达日县| 桦南县| 巴马| 芮城县| 东乌珠穆沁旗|