JavaScript函数“生僻”知澳门金沙网站开发识点详解

写在澳门金沙网站开发 haozbbs.com Q1446595067前面:js函数中有很多“生僻”的点,一不注意就容易出错,下面是我自己总结的一些知识点。

1.多个同名函数生成时会覆盖,所以在调用三个同名show函数时系统会自动调用第三个。在传参数过程中,如果传空值则被定义为undefined,undefined+undefined所得值为NaN。

function show(){console.log(1);}

function show(a){console.log(a);}

function show(a,b){console.log(a+b);}

show();//NaN

show(10);//NaN

console.log(typeof show());//NaN undefined

2.undefined和null

undefined表示变量声明但未初始化时的值,
null表示准备用来保存对象,还没有真正保存对象的值。从逻辑角度看,null值表示一个空对象指针。

JavaScript(ECMAScript标准)里共有5种基本类型:Undefined, Null, Boolean, Number, String,和一种复杂类型Object。可以看到null和undefined分属不同的类型,未初始化定义的值用typeof检测出来是"undefined"(字符串),而null值用typeof检测出来是"object"(字符串)。

任何时候都不建议显式的设置一个变量为undefined,但是如果保存对象的变量还没有真正保存对象,应该设置成null。
实际上,undefined值是派生自null值的,ECMAScript标准规定对二者进行相等性测试要返回true,即

alert(null==undefined); // true

3.当变量名和函数名一样时会出错

var a=10;

function a(){console.log(a)};

a();//error

(function b(){console.log(b);})();//输出函数b

var c=10;

(function c(){console.log(c);})();//输出函数c

console.log(c);//输出10

4.输出函数调用时,有返回值输出返回值,没有返回值输出undefined

function show(){

console.log('哈哈');

return 5*10;

}

function show1(){

console.log('嘿嘿');

}

console.log(show());//哈哈 50

console.log(show1());//嘿嘿 undefined

5.setTimeout和setInterval区别

而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式。

很多人习惯于将setTimeout包含于被执行函数中来达到定时执行的目的使用setInterval,需要手动的停止触发。而使用方法中嵌

套setTimeout,可以根据方法内部本身的逻辑不再调用setTimeout就等于停止了触发。

其实两个东西完全可以相互模拟,具体使用那个,看当时的需要而定了。就像for可以模拟所有的循环包括分支,而还提供了do...while一样。

setInterval("myFunction()",60000);//每秒执行myFunction()一次

setTimeout("myFunction()",1000); //等待1秒后执行myFunction()一次,要达到循环需要函数触发

猜你喜欢

转载自blog.51cto.com/13859992/2139312
今日推荐