文章目录
本文基于【黑马程序员JavaScript全套教程,Web前端必学的JS入门教程,零基础JavaScript入门】P96-139内容所做笔记。求数组长度length、函数变量存储对象argument、作用域链部分为重点内容。
一、数组
数组:一组数据存储在单个变量的集合
// 数组基本使用
// 1.利用new 创建数组
let arr = new Array(); // 创建一个空数组
// 2.利用数组字面量创建数组[]
let arr = []; // 创建一个空数组
let arr1 = [1,'0',true]; // ,号隔开各数组元素
与C语言比:不用先告知长度,默认空数组长度arr.lenth == 0。
索引(下标):按照数组元素的顺序,从0开始,依次为:第0位,第1位…
获取数组元素格式:数组名[索引号]
利用循环遍历数组
利用计数器,将计数器当作索引号使用。
let arr = ['red', 'green', 'blue'];
for (let i = 0; i < 3 ; i++){
console.log(arr[i]);
}
求数组的长度:数组名.length
得到数组长度:数组名.length
let arr = ['red', 'green', 'blue'];
for (let i = 0; i < arr.length ; i++){ //arrlength = 3
console.log(arr[i]);
}
新增数组元素 push unshift
- 修改length长度
let arr = ['red', 'green', 'blue'];
arr.length = 5;
// arr[3], arr[4] == undifined
- 追加:修改索引号
let arr = ['red', 'green', 'blue'];
arr[3] = 'pink';
// arr = ['red', 'green', 'blue', 'pink'];
- push(参数):将一个或多个元素添加在数组 末尾,并返回该新数组(追加后)的长度
// 语法 :arr.push(元素1,元素2,元素...)
let ar = [1,2]
ar.push(5) // 返回3 ar = [1,2,5]
- unshift(参数):将一个或多个元素添加在数组 开头,并返回该新数组(追加后)的长度
// 语法 :arr.push(元素1,元素2,元素...)
let ar = [1,2,3]
ar.unshift(5) // 返回3 ar = [5,1,2]
删除数组元素 pop shift splice
- pop():删除 末位 元素
- shift():删除 开头 元素
- splice(起始,删除个数):删除指定元素
二、函数
函数使用
声明函数:
// 1.命名函数
function 函数名 (形参1, 形参2, ...) {
// 函数体
return 返回值:
}
// 2. 函数表达式(匿名函数)
let fun = function(){ // fun是变量名,不是函数名
// 函数体
}
function:声明函数的关键字
注:函数名一般为动词
与C语言:形参不需要定义
调用函数: 变量名/函数名(实参1, 实参2, …);
return注意事项
- return 具有中止功能,其后的代码不会执行
- return 只能返回一个值,返回结果为最后一个值
- 函数没有return 返回undefined
argument的使用 *
使用场景:当不确定参数传递数量时,可用arguments来获取。
arguments:当前函数的 内置对象 ,所有函数都内置一个arguments对象,arguments对象中存储了传递 所有实参
arguments的展示方式以伪数组的形式
伪数组:
- 具有数组的 length 属性
- 按照索引进行存储
- 不具有数组的处理方法,如后续的pop()、push()等
function fn(){
console.log(arguments) // 显示1,2,3
console.log(arguments.length) // 显示长度3
console.log(arguments[2]) //显示元素3
}
fu(1, 2, 3);
立即执行函数
无需调用,立即执行函数,可防止变量污染
多个立即函数之间用分号隔开
语法:
- function(形参){函数体})(实参)
- function(形参){函数体}(实参))
三、作用域
作用域:变量作用的范围
分类:
- 全局作用域:整个script标签或一个单独的js文件
- 局部作用域:函数内部
说明:
- 函数的形参,属于局部变量
- 若在函数内部未声明的变量,属于全局变量(不推荐)
例:
function fn(){
var a = b = c = 10;
// a为fn函数的局部变量
// b\c为函数内部未声明的变量,为全局变量。
}
全局变量只有浏览器关闭时才会销毁,比较占用内存资源
js在es6的时候新增块级作用域,即花括号外不允许使用花括号内定义的变量
作用域链 :内部函数访问外部函数的变量,采用链式查找的方式取值的链式结构 (就近原则)
若对本文有任何建议或意见欢迎在评论区提出~十分感谢!
Ending