写在前面: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()一次,要达到循环需要函数触发
---------------------
【转载,仅作分享,侵删】
作者:Ryan Ji
原文:https://blog.csdn.net/qq_42451979/article/details/80950113
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|