作者grence (多想两分钟 = =")
看板Ajax
标题Re: [问题] js Function位置问题
时间Wed Jun 9 23:27:21 2010
※ 引述《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)
1F:→ kenzou:答案是undefined。 06/09 23:57
※ 编辑: grence 来自: 180.176.72.116 (06/10 01:12)