2020.8.28陈悦玲

总结

JavaScript特点:解释型语言、弱类型语言、基于对象、跨平台

弹出输入框 prompt("")

原始类型:null undefined string number boolean

隐式转换: undefined的转化为NaN

逻辑运算符都转为布尔型

解决声明提前 :

尽量将变量和函数的声明集中在当前作用域的顶部创建

使用ES6中的let代替var

使用 var 函数名=function(...){...} 代替 function 函数名(...){...}

函数分类整理

匿名函数的自调: 定义函数后自己调用自己,调用后,立刻释放

(function(形参列表){
// 封装的代码,不会造成全局污染
// 函数体中的变量和函数都不能被外部访问
return 返回值
})(实参列表);

回调函数: 将匿名函数以实参形式传递,此时的形参就是匿名函数的函数名称,这就是回调函数

function fn(a){
//调用fn的时候,匿名函数赋给了a,a就是函数名称a()
//执行传递的匿名函数体中的代码
}
fn(function(){...})

递归函数:在函数内部调用自身,本身是一个死循环

var i=0;
function fn(a){
a++;
if(a<=5){
return fn(a)
}else{
return a
}
}
var show=fn(i)
console.log(show)

函数重载: 相同函数名,不同参数列表的多个函数,在调用时,根据传入参数的不同,自动选择匹配的函数执行

function fn(girlFriends){
if(arguments.length0){
console.log("我没有女朋友")
}else if(arguments.length
1){
console.log("我有一个女朋友")
}else if(arguments.length==2){
console.log("我有两个女朋友")
}else{
console.log("我有三个女朋友")
}
}
fn("丽丽","明明") // 我有两个女朋友
fn("丽丽") // 我有一个女朋友

闭包: 即重用变量,又保护变量不被污染

var add = (function () {
var counter = 0;

return function () {return counter += 1;}
})();
add(); // counter=1;
add(); // counter=2;
add(); // counter=3;

评论