我知道這是一個愚蠢的問題。 是否有可能在javascript中創建自定義塊? 這是塊:自定義塊JavaScript?
if(a==2){
"block!"
}
這是塊:
for(;;){
"block!"
}
這可能嗎?我從來沒有見過這個題目。這有可能在es6中實現嗎?
這將是巨大的回調,這將讓你做到這一點:
foo{
...
}
取而代之的是:
foo(function(){
...
}
我知道這是一個愚蠢的問題。 是否有可能在javascript中創建自定義塊? 這是塊:自定義塊JavaScript?
if(a==2){
"block!"
}
這是塊:
for(;;){
"block!"
}
這可能嗎?我從來沒有見過這個題目。這有可能在es6中實現嗎?
這將是巨大的回調,這將讓你做到這一點:
foo{
...
}
取而代之的是:
foo(function(){
...
}
我想你會喜歡紅寶石。
但是,沒有辦法在JavaScript中做到這一點,我還沒有聽說過任何類似的es6功能。
您可以使用標籤在JavaScript中創建塊,但只有在您希望將break
作爲afaik you can't do anything else with them且它們沒有自己的作用域(let
除外)時,它們纔有用。
foo: {
// this is a block
console.log(1);
break foo;
console.log(2); // never logged
}
哪個更好,在一個函數中使用一個塊作用域,並使用'break;'或者使用一個普通的函數,然後做一個'return;'? – CMCDragonkai
我在這裏描述的標籤塊與_function_不同; _函數_在_JavaScript_中有很大的開銷。您所做的調用越少,通常代碼效率就越高。 –
據我所知,JavaScript的只有功能範圍,全球範圍內並沒有塊範圍就像C.所以目前你不能做到這一點。如果你想要一個塊,你必須把它包裝在一個函數中,你已經列出了。
我已經看到了這一招使用,讓你一個塊與它自己的範圍爲變量的try/catch:
try {
throw 0;
} catch(variable) {
//variable only exists in this block
variable = 'my value';
console.log(variable);
//i can return from parent function here
}
//variable does not exist outside of the block
console.log(typeof variable);
有使用try/catch語句性能方面的考慮,但它是有用的,因爲它仍然允許如果塊位於函數或循環中,則使用return
或break
。
回調基本上是一個函數表達式作爲參數傳遞給參考,我不認爲你能夠引用一個「塊」,否則。 –