日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

经典面试题(5):小心javascript自动插入分号机制

發布時間:2025/3/15 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 经典面试题(5):小心javascript自动插入分号机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在《JavaScript語言精粹》這本書里,這個“自動插入分號”機制被劃入到了JavaScript的毒瘤里面,與之并列的前面的全局變量。?


有些時候,不合時宜地插入分號,會導致嚴重的后果。 比如一個return語句要正確返回一個值,這個值的表達式的開始部分必須和return位于同一行。


今天,我們就來聊聊這個知識點,看下面的代碼函數,它們會返回什么?

function foo1(){
return {bar: "hello"}; }

function foo2(){
return{bar: "hello"}; }

出人意料的是,這兩個函數返回的內容并不相同。更確切地說是:

console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());

將產生:

foo1 returns:
Object {bar: "hello"}
foo2 returns:
undefined

這不僅是令人驚訝,而且特別讓人困惑的是, foo2()返回的是undefined,也沒有任何錯誤拋出。


原因是這樣的,當碰到 foo2()中包含return語句的代碼行(代碼行上沒有其他任何代碼),分號會立即自動插入到返回語句之后。請仔細留意上面兩個函數中return的不同之處,foo2函數的return是單獨一行的。


也不會拋出錯誤,因為代碼的其余部分是完全有效的,即使它沒有得到調用或做任何事情(相當于它就是是一個未使用的代碼塊,定義了等同于字符串 "hello"的屬性 bar)。


所以,在使用return語句的時候,要留意javascript的這個特點,盡可能不要將return關鍵字寫在獨立的一行,避免不必造成不必要的錯誤。

熱門文章

原創教程

原創教程:

附加習題:


趣味職場

職場焦慮:

感到迷茫:

培訓出身:

培訓費用:

搞笑黑話:

職業自由:

職場形象:


合作推廣分割線

總結

以上是生活随笔為你收集整理的经典面试题(5):小心javascript自动插入分号机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。