7. 数组
数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的方式。
7.1 数组的创建方式
js中创建数组有两种方式:
- 利用new 创建数组
- 利用数组字面量创建数组
7.1.1 利用 new 创建数组
var arrayName = new Array(); //创建一个新的空数组
7.1.2 利用数组字面量创建数组
//1. 使用数组字面量创建空数组
var arrayName = [];
//2. 使用数组字面量创建并初始化数组
var arrayName = ['name1', 'name2', 'name3'];
- 数组的字面量是方括号
[]
- 声明数组并赋值称为数组的初始化
7.2 获取数组元素
7.2.1 数组的索引
索引[下标]:用来访问数组元素的序号(数组下标从0开始)
7.2.2 遍历数组
循环遍历
<script>
//遍历数组
var arr = ['red', 'green', 'blue'];
for(var i = 0; i < 3; i++){
console.log(arr[i])
}
</script>
/*
red
green
blue
*/
7.2.3 数组长度
使用“数组名.length”可以访问数组元素的数量(数组长度)。
<script>
//数组长度
var arr = ['red', 'green', 'blue'];
console.log(arr.length)
</script>
// 3
7.2.4 增加数组元素
-
修改length
<script> var arr = ['red', 'green', 'blue']; console.log(arr.length); arr.length = 5; console.log(arr); </script> /* 3 (5) ["red", "green", "blue", empty × 2] */
length 属性是可读写的,默认值为 undefined
-
修改索引号
<script> var arr = ['red', 'green', 'blue']; console.log(arr.length); arr[3] = 'pink'; console.log(arr.length); console.log(arr); </script> /* 3 4 (4) ["red", "green", "blue", "pink"] */
8. 函数
函数:封装了一段可被重复执行的代码块
<script>
function name(参数列表){
//函数体
}
</script>
8.1 函数的参数
实参 :函数调用时 传入的 参数
形参: 函数定义时 参数列表内的元素
- 如果实参个数 = 形参个数 正常运算
- 如果实参个数 > 形参个数 多余参数不参与运算
- 如果实参个数 < 形参个数 多余形参为undefined 输出 NaN
8.2 return
return 终止函数并且只能返回一个值
8.3 arguments
arguments ,所有函数内置的对象,存储了传递的所有实参
arguments是一个伪树组,因此可以遍历,
- 具有length 属性
- 按索引方式存储数据
- 不具有数组的push,pop等方法
8.4 函数表达式 :匿名函数
var 变量名 = function(参数列表){
//函数体
}
9. 作用域
通常来说, 一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
全局作用域:整个script标签内 或者是一个单独的is文件
局部作用域: 在函数内部就是局部作用据
9.1 全局变量
在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量):
- 全局变量在代码的任何位置都可以使用
- 在全局作用域下var声明的变量是全局变量
- 特殊情况下,在函数内不使用var声明的变量也是全局变量(不建议使用)
9.2 局部变量
在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量):
- 局部变量只在该函数内部使用
- 在函数内部var声明的变量是局部变量
- 函数的形参实际上就是局部变量
9.3 作用域链
- 只要是代码,就至少有一个作用域
- 写在函数内部的为局部作用域
- 函数内部如果还有函数,那么在这个作用域中又产生了一个作用域
- 根据内部函数可以访问外部函数变量的机制,用链式产找决定哪些数据能被内部函数访问,就称为作用域链
10. 预解析
JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码时候分为两步:预解析和代码执行
- 预解析 js引擎 会把js 里面所有 var 还有 function 提升到当前作用域的最前面
- 代码执行 按照代码书写的顺序从上到下执行
预解析 分为 变量预解析(变量提升)和 函数预解析(函数提升)
- 变量提升 就是把所有的变量声明提升到当前作用域的最前面 不提升复制操作
- 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
11. JavaScript 对象
11.1 对象
万物皆对象
11.2 创建对象的三种方式
11.2.1 字面量创建对象
对象字面量:就是花括号{}
里面包含了表达这个具体事物(对象)的属性和方法
var obj = {} //创建一个空对象
var obj1 = {
uname:"name",
sex:"man",
say: function(){
console.log('hello world');
}
} //创建了一个对象
//属性/方法 键值对 赋值
// 属性/方法之间 , 隔开
// 方法 使用匿名函数
调用方式
// 1
obg1.uname
// 2
obj1['uname']
// 3
obj1.say()
11.2.2 new Object
var obj = new Object(); // 创建了一个空的对象
obj.uname = 'name';
obj.sex = 'man';
obj.say = function(){
console.log('hello world');
}
11.2.3 构造函数
构造函数:一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,与 new 搭配使用
function 构造函数名(){
this.属性 = 值;
this.方法 = function(){}
}
var 变量 = new 构造函数名();
- 构造函数首字母大写
- 构造函数不需要return
11.3 内置对象
js中的对象分为三种:自定义对象、内置对象、浏览器对象
内置对象是js封装好的常用或最基本的功能: Math、Date、 Array、String等
11.3.1 Math对象
Math.PI //3.1415926
Math.max() //最大值
Math.floor() //向下取整
Math.ceil() //向上取整
Math.round() //四舍五入
Math.abs() //绝对值
Math.random() //随机数
11.3.2 日期对象
转载:https://blog.csdn.net/qq2512446791/article/details/105271689