在C++中,你可以做ES6塊範圍的變量定義,條件
if (MyClass* obj = MyClass::getInstance()) { ... }
在JavaScript中,只有功能範圍的變量,因此下面的語句是沒有意義的
if (var x = getTrueOrFalseValue()) { ... }
但ES6引入了let
和const
關鍵字,它們聲明只能在塊範圍內訪問的變量。爲什麼你不允許在if/while條件下使用它?例如:
if (let x = getTrueOrFalseValue()) { ... }
我覺得這很酷,因爲它不會破壞功能範圍未使用的變量,並允許只在當使用它們/而塊範圍。
這是你有回答的問題之一:這是一個設計選擇。 – CoderPi
你最好問這個[TC39](http://www.ecma-international.org/memento/TC39.htm)。 – Teemu
['let(x = get ...()){} blocks](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#let_blocks)無用。 – Bergi