→ kenzou:答案是undefined。 06/09 23:57
※ 編輯: grence 來自: 180.176.72.116 (06/10 01:12)
※ 引述《iam87king (沉默傷心)》之銘言:
: 最近用了一個檢測js碼的service,發現被提了好多warning XD
: 幾個印象比較深的提出來跟大家分享一下
: 1.parseInt
: 平常習慣就是直接 var num = parseInt("123");
: 後來才發現原來parseInt第二個參數不填也會被報warning
: 所以嚴謹一點的寫法應該是這樣 var num = parseInt("123", 10); 10就是10進位
: 2.逗號問題
: 我也不知道為什麼這樣有問題
: var context = { "a" : "Hello", "b" : "Reject", "c" : "Good Night"
: ,"d" : "Nothing", "e" : "Ajax"};
: 改成這樣就沒有出現warning了
: var context = { "a" : "Hello", "b" : "Reject", "c" : "Good Night",
: "d" : "Nothing", "e" : "Ajax"};
: 雖然都可以run,我也不知道到底差在哪
: 3.Function 位置
: 假設有二個Function
: Function initPage(){
: sayHello();
: }
: Function sayHello(){
: alert("Hello");
: }
: 我知道這樣也是可以執行,但它還是說你的sayHello在被呼叫時尚未定義
: 所以想請問一下Function在被呼叫時尚未定義會不會造成什麼潛在的影響?
function a(){
b();
}
a();//fine
function b(){
alert(0);
}
var c = function(){
d();
}
try{
c();
}
catch(e){//error
alert('error');
}
var d = function(){
alert(1);
}
我是這樣理解……
function b(){} 這種宣告方式會被拉到一開始就執行
var d = function(){} 則是瀏覽器讀到宣告的位置才會執行
呃…再準確一點解釋,這兩種宣告方式都會被拉到最開始的地方去定義;
但 b一直都是 function
而 d一開始是 undefined,一直到 var d = function(){} 這時候才被賦值為 function
==
想到另一段程式....
var t2 = 20;
function test2() {
return say(); // 可以把這兩行對調
var t2 = 10; // 再執行看看
function say() {
return t2;
}
}
alert(test2());//10? 20?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.176.72.116
※ 編輯: grence 來自: 180.176.72.116 (06/09 23:41)