函数
一、函数定义
1.声明式 :声明前后都可以调用
2.赋值式 : 只能在赋值之后调用
3.声明式和赋值式区别
二 函数的调用
1.通过"函数名()"
2.了解 new 函数名 可选括号
3.如果函数没有定义 直接调用会报错 如果处理错误?
1.通过if来判断:如果有fn函数 就调用fn函数
if(fn){
fn();
}
2.上面1内容简写 fn && fn();
三、函数的参数
1.形参: 定义时候传入
2.实参: 调用的时候传递
1 实参可以 是实在的值 数字、字符串、布尔、”“、null、undefined
2.传入变量 (确保变量有值,变量被定义了);
3.隐藏参数 (不定参)arguments(伪数组);
使用场景:多数情况都是处理不定参(参数个数会变动)
3.参数的数量
1.形参比实参多
多的形参就是会打印undefined
2.实参比形参多
使用没什么影响,不建议这样写
3.多数情况下实参和形参都是数量等同的 且是一一对应关系
四、数组
1.数组定义 var arr = [1,2,3];--->键名(索引:从0开始从左向右计算)-->键值
2.通过 数组[键名] 获取对应键值 :arr[1]-->键值:2
3.数组的长度 数组.length 就是数组的长度
五、字符串 可以当成数组来使用
好处 字符串拥有了数组的功能
1.下标 键值
2.长度
1. 如果没有函数 做容错
fn && fn();
2.判断变量 (防止变量报错):如果存在变量就输出 如果没有就不输出也不报错
console.log(a);
if(a){
console.log(a);
}
判断一个变量是否存在 会通过更安全的 typeof 判断
console.log(typeof a);
注意: 这种判断的"undefined" 是一个字符串
var a = 10;
if(typeof a !== "undefined"){
console.log(a);
}
3.函数参数可以是多种形式 ,函数被称为一等公民
函数参数可以是 数字、字符、数组、对象、函数、undefined、null、"";
高阶函数:有函数作为另外一个函数的参数输入或者输出的函数;
函数优点 1.提高复用性 2.封装 3.延迟执行
通过事件 来实现延迟执行;
解析时候 在上面声明一个a,解析之后在执行
var a;
预解析
addEventListener ---> 只能兼容chrome浏览器
attchEvent
webpack gulp
1.函数的预解析 2.变量的预解析;(hosting)
1.函数的预解析;
test();
function test() {
console.log("test");
}
2.变量的预解析
console.log(a);
a = 10;
函数内部声明的函数也会提升到外层函数的上面;