我有以下的javascript代碼JavaScript的分號問題
var foo = function() {
var func = function() {
var one = 0;
if (one === 0) {
alert('func');
}
}
return {
func: func
};
}
foo = new foo();
foo.func();
我上面的代碼警報func
這是罰款。現在,當我改變對象字面即return {}
到以下
return
{
func: func
}
然後,它不返回任何東西。我知道爲什麼JavaScript會在回報結束時添加分號;
。因此,請留出這一部分一段時間,讓我們回顧一下我的原始代碼。當我改變if
語句下面
if (one === 0)
{
alert('func');
}
然後它警報func
。 爲什麼?。因爲在這種情況下JavaScript應該在if(one === 0)
的末尾添加分號,所以我認爲它應該返回錯誤。
等一下,還有更多。現在讓我們把注意力轉移回頂部的原始代碼。現在,當我改變我的內在功能,下面
var func = function()
{
//code here
}
隨後又執行此代碼罰款和警告func
。再次爲什麼?與外部函數一樣。
'return'語句是這種自動分號插入的特例 – Ian
「我知道爲什麼JavaScript會在分支結束時添加分號」。不,它不。語法只是在'return'後接受語句結束。 – kay
我正在看道格拉斯克羅克福德的演示文稿,並提到他在行尾添加了分號,所以最好自己放。這就是我在這裏說的原因。 – 2619