一.操作数组
1.改
2.增
- arr.push(新增的内容):将一个或多个元素添加到数组的结尾
- arr.unshift(新增的内容):方法将一个或多个元素添加到数组的开头,并返回该数组的长度
3.删除
- arr.pop():方法从数组中删除最后一个元素,不带参数,并返回元素的值
- arr.shift():方法从数组中删除第一个元素,并返回元素的值
- arr.splice(start,deleteCount):start--起始位置,deleteCount--删除元素的个数(不写的话默认全部删除)
二.函数
1.函数的使用
先声明后调用
a.声明语法
function 函数名(){函数体
}
b.命名规范
- 和变量名基本一致
- 尽量小驼峰
- 前缀应该为动词
- 常用的动词约定
动词 | 含义 |
can | 判断是否可执行某个动作 |
has | 判断是否含义某个值 |
is | 判断是否为某个值 |
get | 获取某个值 |
set | 设置某个值 |
load | 加载某些数据 |
c.调用语法
函数不调用自己不执行
函数名()
d.函数传参
(1)声明语法
function 函数名(参数列表){函数体
}
//如
function getSum(num1,num2){document.write(num1+num2)
}
- 形参:声明函数写在函数右括号里的
- 实参:调用函数时写在函数名的右括号里的
- 形参理解为在函数中声明的变量,实参理解为给这个变量赋值
- 开发中保持形参和实参的个数一致
(2)函数返回值
//当函数需要返回数据出去时,用return关键字
return 数据
- 有些函数有返回值,有些没有返回值
- return后面的数据不能换行写
- 没有值,默认返回的是undefined
- 返回多个数据时可以使用数组的形式返回
(3)函数注意点
- 函数名相同时,就近原则,后面的函数会覆盖前面的函数
- 在JS中形参和实参的个数可以不一致(形参过多--自动填上undefined;实参过多--多余的实参被忽略,函数内部有一个arguments,里面装着所有的实参)
- 一旦碰到return就不会执行了,所以结束用return
2.匿名函数
函数可以分为:具名函数+匿名函数
a.没有名字的函数,无法直接使用
b.使用方式
(1)函数表达式
let fn=function(){
//函数体
}
fn()//调用函数
- 具名函数可以在函数声明调用 (调用可以写到任意位置)
- 函数表达式要先声明
(2)立即执行函数
//方式1--将匿名函数整个直接使用小括号包起来,然后直接小括号调用
(function (){console.log(11)})();//方式2--调用之后再用一个小括号全部括起来
(function(){console.log(11)}());//不需要调用立即执行
- 避免全局变量之间的污染
- 不需要额外调用
- 多个立即执行函数之间要用分号隔开
三.作用域
1.所用到的名字是有可用性的代码范围.简称作用域
2.组成
a.全局作用域:,整个script标签包含的是全局作用域
b.局部作用域:函数作用域,跳出函数后不能使用
c.全局变量:函数外的let的变量
d.局部变量:函数内的let的变量
3.变量的特殊情况
- 函数没有声明,直接赋值,就当做全局变量(强烈不允许)
- 函数内部的形参可以看作函数的局部变量
4.变量的访问原则
- 只要是代码,就至少有一个作用域
- 写在函数内部的局部作用域
- 如果函数中还有函数,那么在这个作用域中就可以诞生一个作用域
- 在能够访问到的情况下,先局部,局部没有找全局
四.逻辑运算符里的短路
1.短路
只存在于&&和||中,当满足一定条件会让右边代码不执行
符号 | 短路条件 |
&& | 左边为false就短路 |
|| | 左边为true就短路 |
0、''、undefined、null、false、NaN转换为布尔值之后都是false,其余为true