- 函数就是封装了一段可以被重复执行调用的代码块 目的: 就是让大量代码重复使用
函数使用分为两步: 声明函数 和 调用函数
1. 声明函数
// function 函数名() {
// // 函数体
// }
2. 调用函数
// 函数名();
// 调用函数的时候千万不要忘记加小括号
注意:我们可以利用函数的参数实现函数重复不同的代码
// function 函数名(形参1,形参2...) { // 在声明函数的小括号里面是 形参 (形式上的参数)
// }
// 函数名(实参1,实参2...); // 在函数调用的小括号里面是实参(实际的参数)
注意:(1) 多个参数之间用逗号隔开 (2) 形参可以看做是不用声明的变量
如果实参的个数小于形参的个数多于的形参定义为undefined 最终的结果就是NaN 建议: 我们尽量让实参的个数和形参相匹配
- 函数是做某件事或者实现某种功能
函数的返回值:
// function 函数名() {
// return 需要返回的结果;
// }
// 函数名();
// (1) 我们函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名() 通过return 实现的
// (2) 只要函数遇到return 就把后面的结果 返回给函数的调用者 函数名() = return后面的结果
注意:return 终止函数,后面的代码不会被执行,只能返回一个值
- 伪数组 并不是真正意义上的数组
- 具有数组的 length 属性
- 按照索引的方式进行存储的
- 它没有真正数组的一些方法 pop() push() 等
-
JavaScript作用域 : 就是代码名字(变量)在某个范围内起作用和效果。目的是为了提高程序的可靠性更重要的是减少命名冲突
注意:全局作用域: 整个script标签 或者是一个单独的js文件。 局部作用域(函数作用域) 在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用 -
变量的作用域: 根据作用域的不同我们变量分为全局变量和局部变量
注意1. 全局变量:在全局作用域下的变量 在全局下都可以使用 如果在函数内部 没有声明直接赋值的变量也属于全局变量
注意2. 局部变量:在局部作用域下的变量 ,在函数内部的变量就是 局部变量。函数的形参也可以看做是局部变量
注意3. 从执行效率来看全局变量和局部变量 (1) 全局变量只有浏览器关闭的时候才会销毁,比较占内存资源 (2) 局部变量 当我们程序执行完毕就会销毁, 比较节约内存资源
- 我们js引擎运行js 分为两步: 预解析 代码执行
// (1). 预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面
// (2). 代码执行 按照代码书写的顺序从上往下执行
// 2. 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
// (1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
// (2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
- 变量、属性,函数、方法区别:
//变量和属性:都是存储数据
1. 变量:单独声明并赋值 使用时直接写变量名 单独存在
2. 属性:在对象里面的不需要声明 使用时必须是 对象.属性
// 函数和方法:实现某种功能 做某件事
1.函数:单独声明 并且调用 函数名() 单独存在
2.方法:在对象里面 调用时 对象.方法()
- 构造函数: 因为我们一次创建一个对象,里面很多的属性和方法是大量相同的,我们只能复制。因此我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为构造函数。又因为这个函数不一样,里面封装的不是普通代码,而是对象。
// 构造函数 就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面 9. 构造函数的语法格式
// function 构造函数名() {
// this.属性 = 值;
// this.方法 = function() {}
// }
1. 构造函数名字首字母要大写
2. 我们构造函数不需要return 就可以返回结果
3. 我们调用构造函数 必须使用 new
4. 我们只要new Star() 调用函数就创建一个对象 ldh {}
5. 我们的属性和方法前面必须添加 this
更多精彩内容敬请关注
不愿迟到早退的叻叻白