一、函数
1.函数的概念
函数:就是封装了一段可被重复调用执行的代码。通过此代码可以实现大量代码的重复使用。
2.函数的使用
2.1声明函数
2.2调用函数
注意:函数本身不会自己执行代码,只有调用代码才可以执行代码
2.3函数封装
3.函数的参数
3.1形参和实参
3.2形参和实参的匹配问题
注意:
4.函数返回值
return语句可以实现将函数的值返回给调用者。
return返回值:return只能返回一个值,如果逗号隔开多个值,以最后一个值为准。
我们的函数如果有return,则返回的是return后面的值,如果函数美哦与return,则返回undefined。
break,continue和return的区别:
5.arguments的使用
5.1 概念:当我们不确定有多少个参数传递时,可以用arguments来获取。在JavaScript中,arguments实际上它是当前函数的一个内置参数,所有函数都被内置了一个arguments对象,arguments对象中存储了传递的所有实参。
5.2 伪数组,并不是真正意义的数组
1.具有数组的length属性
2.按照索引的方式进行存储
3.它没有真正数组的一些方法pop(),push()等。
例:
二、作用域
1.作用域概述:通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
2.全局变量和局部变量
全局变量:在全局作用域下的变量
局部变量:在局部作用域下(函数内部)的变量
注意:在函数内部没有声明直接使用的变量也是全局变量。
函数的形参也可以看作是局部变量。
从执行效率来看:
全局变量只有在浏览器关闭时才会销毁,比较占内存资源;
局部变量程序运行完毕就会销毁,比较节约内存资源。
3.作用域链
内部函数访问外部函数的变量,采取链式的方法决定取哪个值,这种结构我们称作为作用域链,即就近原则。
三、JavaScript预解析
1.预解析
1.1 js引擎运行js分为两步:预解析 代码执行
(1)预解析:js引擎会把js里面的所有var 还有function提升到当前作用域的最前面
(2)代码执行:按照代码书写顺序从上往下执行
1.2预解析分为变量预解析(变量提升)和函数预解析(函数提升)
(1)变量提升:就是把所有的变量声明提升到当前作用域最前面,不提升赋值操作
(2)函数提升:把所有的函数声明提升到当前作用域的最前面,不调用函数
四、JavaScript对象
1.对象
1.1什么是对象
在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的。
属性:事物的特征; 方法:事物的行为。
1.2为什么需要对象
保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组,保存一个人的完整信息可以用对象。
2.创建对象的三种方式
2.1利用对象字面量创建对象
对象字面量:就是{ }里面包含了白哦大这个具体事物(对象)的属性和方法。
{ }里面采取键值对的形式表示。
键:相当于属性名
值:相当于属性值,可以是任意类型
对象调用:
变量、属性、函数、方法总结
2.2利用new Object创建对象
2.3利用构造函数来创建对象
注意:
3.new关键字
new在执行时会做的四件事:
(1)在内存中创建一个新的空对象。
(2)让this只想这个新的对象。
(3)执行构造函数里面的代码,给这个新对象添加属性和方法。
(4)返回这个新对象(所以构造函数里面不需要return)。
4.遍历对象属性
for ...in语句用于对数组或者对象的属性进行循环操作。
语法结构:
语法中的变量是自定义的,它需要符合命名规范,通常我们会将这个变量写为k或者key.
5.小结
五、内置对象
1.内置对象
JavaScript中队象分为三类:自定义对象、内置对象、浏览器对象
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用或是最基本而必要的功能(属性和方法)。
JavaScript提供了多个内置对象:Math、Date、Array、Srting等。
2. Math对象
猜数字游戏
3.Date
计时器
4.创建数组的两种方式
(1)利用数组字面量
var arr=[1,2,3];
console.log(arr[0]);
(2)利用new Array()
var arr1=new Array(2,3);
console.log(arr1);
5.数组对象
5.1检测是否为数组
(1)instanceof 运算符 可以用于检测是否为数组
(2)Array.isArray()
5.2 添加删除数组元素的方法