多参和
function fn(a,b,c,d){
console.log(a+b+c+d);
}
console.log(1,1); // NaN
console.log(1,1,1,1); // 4
console.log(1,1,1,1,1,1); // 4
参数设置默认值
function fn(name,age){
name = name || "karen";
}
function fn2(name = "karen", age = 18)
function fn3(name,age){
if(name = undefined){
name = "karen";
}
}
回调函数
function tool(a,cb){
a++;
return cb(a);
}
var a = function tool(10,function fm(num){
return num;
})
console.log(a);
变量作用域
var a=10;
function fn(){
console.log(a);
var a= 20;
}
fn(); // undefined
var a = 10;
var a = 20;
console.log(a); //20
- 不要有重复的变量名(不和前面的代码有一样的标识符)
//var a,a;
console.log(a); // undefined
var a = 10;
console.log(a); // 10
var a = 20;
console.log(a); // 20
- 不能和关键字一样(系统提供的有特殊功能的单词)
- for循环内部不要声明函数(javascript bug)
var b = 30;
function fn(){
// var b ;
console.log(b); // undefined
for(var i=10;i<13;i++){
var b = 10;
}
console.log(b); // 10
}
fn();
函数的闭包(函数返回内部的函数)
function fm(){
var a = 30;
function fn(){
return a;
}
return fn; // 返回fn函数的闭包
}
console.log(fm()());
for循环
var array=[];
var a = 0;
function fn(){
for(var i = 0; i<30;i++){
if(i<3){
function fm(){ alert(i) }
array.push(fm)
}
}
}
fn();
array[0](); //弹窗30
array[1](); //弹窗30
array[2](); //弹窗30
思考
function fn(){
// var a;
// var b;
console.log(a); //undefined
console.log(b); //undefined
console.log(c); // c没有定义,报错
var a=20; //有var后不会在外部空间隐式声明
var b=c; // c没有开辟空间
}
fn();
console.log(a);
console.log(b);
console.log(c);
// var a;
// var b;
// var c;
function fn(){
a=b=c=20;
console.log(a); //20
console.log(b); //20
console.log(c); //20
}
fn();
console.log(a); //20
console.log(b); //20
console.log(c); //20
网友评论