簡體   English   中英

節點的REPL無法識別塊代碼

[英]node's REPL doesn't recognizes a block code

我正在嘗試在節點的REPL編寫一個簡單的代碼,但遇到了一些困難:

一次輸入一行命令一切正常,
但用括號塊{ ... code ... }包裹它時
(並在每一行之后點擊進入)我在收到一個( } )后收到錯誤。

在此輸入圖像描述

正如你在我添加的圖像中看到的那樣 - 執行相同的代碼,一次一行,工作正常。

你的翻譯認為你要創建一個對象文字,就像{ var: x }那樣。 { var x; } { var x; }不是一個好的對象語法,因為在標識符var之后應該有一個冒號,而不是x 因此, SyntaxError

你可以強制解析器認為它是一個代碼塊,通過在它之前添加任何實際上是代碼塊的提示:

label: { var x; }

if (true) { var x; }

do { var x; } while (false);

編輯:另外,請注意,沒有充分的理由這樣做。 如果您沒有將代碼塊用作流控制語句的語句組,或者作為標簽的目標,則它完全沒用(並且是您發現的難以跟蹤的錯誤的潛在來源)。

在其他語言中,您可能正在控制變量的范圍(我希望您確保在塊外部看不到x ?)。 在JavaScript中, 只有函數具有范圍 因此,要將變量與周圍環境隔離,您需要一個函數:

{
  var x1;
};
x1; // undefined

(function() {
  var x2;
})();
x2; // Uncaught ReferenceError: x is not defined

得到它了,
我應該加一個; 括號后。

這是現在運行代碼的結果:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM