JS基础
运算符
赋值运算符
对变量进行赋值的运算符:+=、-=、*=、/=、%=
+=:将等号右边的值赋予给左边,左边必须是一个容器
一元运算符
只需要一个操作数。
自增:++,让变量的值每次+1
- 前置自增:++num
先加后使用,i=1,++1+1=3 - 后置自增:num++(经常使用)
先使用后自加,i=1,i++ +1 =2,因为是i=1先参与运算,等运算结束后i再自加1
自减:- -,让变量的值每次-1,与自增同理
比较运算符
>
<
>=
<=
==:左右两边的值是否相等 2=='2' 结果为true,隐式转换,将字符型转换成数字型
!=:左右两边的值不相等
===:左右两边是否类型和值都相等 2==='2' 结果为false,数据类型不同
(以后判断是否相等,要用===)
!==:左右两边是否不全等
尽量不要比较小数,小数有精度问题。
字符之间的比较,比较的是他们对应的ASCII码。
逻辑运算符
运算符优先级
语句
表达式和语句
表达式:可以被求值的代码,会计算出一个结果。
语句:一段可以执行的代码,if语句、for循环语句等
分支语句
三大流程控制语句:顺序结构、分支结构、循环结构
分支语句:选择性的执行想要的代码
包含:if分支语句、三元运算符、
if语句
- 单分支
if (条件) { //为真则执行打印语句,为假则不执行,数字中只有0是false,字符串中只有 ' ' 空字符串为false
满足条件时要执行的代码
}
- 双分支
if (条件){
满足条件时要执行的代码
}else {
不满足条件执行的代码
}
- 多分支(返回多个结果)
if (条件1){
代码1
}else if (条件2){
代码2
}else if (条件3){
代码3
}else {
代码n
}
三元运算符
比if双分支更简单的写法。一般用来取值
语法:
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
switch语句
switch(数据){
case 值1:
代码1
break
case 值2:
代码2
break
default:
代码n
break
}
要求是全等(===) ,需要配合break跳出。
循环语句
while循环
while(循环条件){ //先判断一次,当为ture时进入循环体执行代码,执行后再回来判断一次
要重复执行的代码(循环体)
}
while循环三要素:变量起始值、终止条件(没有终止条件就会造成死循环)、变量变化量(自增、自减)
for循环
for(变量起始值;终止条件;变量变化量){
循环体
}
for、while循环的区别
明确循环次数时推荐使用for循环,不明确时推荐使用while循环
循环退出
循环结束:break和continue
- break
退出整个循环 - continue
结束当前循环,遇到continue时循环里下面的代码将不会执行,会重新回到循环的判断条件继续循环结构,相当于跳过了某一次循环
无限循环
while(true){} //可构建无限循环,需要break退出
for(;;){}
for循环嵌套
for(外部声明记录循环次数的变量;循环条件;变量变化量){
for(外部声明记录循环次数的变量;循环条件;变量变化量){
循环体
}
}
数组
数组声明:arr[0],数组索引从0开始
let arr=[1,2,3,'pink',true]
let arr=new Arry(数据1,数据2,数据3)
数组的增删改查
增
数组 .push() 方法向数组添加一个或多个元素添加到数组的末尾
,并返回数组的长度
arr.unshift() 方法向数组添加一个或多个元素添加到数组的开头
改
arr[]=‘today’
所有的元素都要修改时,可以使用遍历
删
arr.pop():删除最后一个元素,返回该元素的值
arr.shift():删除第一个元素,返回该元素的值
arr.splice(起始位置,删除几个元素):删除指定元素,如果只写第一个,就会从该位置开始,删除掉后面所有的
函数
执行特定任务的代码块
声明:
function 函数名(){
函数体
}
调用:
函数名()
函数命名规范:和变量名基本一直,但前缀应为动词
函数传参
function 函数名(参数列表){ //形参:参数可以是一个、两个……
函数体
}
调用:
函数名(传递的参数列表) //实参:和函数声明的参数保持一致
如果函数调用的时候没有写实参,就会将默认值undefined传递给形参;为了让程序严谨,一般可以给形参一个默认值
。
function getSum(a=0, b=0) { //给一个默认值,就算调用函数时没有传参数过来,也不会出现NaN的情况
document.write(a + b)
}
函数返回值
调用一个函数,将会返回一个值。当函数需要返回数据出去时,用return返回。
return 数据 //return之后的代码将不会再执行,直接结束函数
若函数没有return语句,默认返回值是undefined。
若想返回多个值,可以返回数组,让数组接收多个数据。
函数名相同时,后面的覆盖前面的。
break结束的是循环,return结束的是函数
作用域
- 全局作用域
作用于所有代码执行的环境或一个独立js文件。 - 局部作用域
作用于函数内的代码环境。
如果函数内部,变量没有声明,直接赋值了,也当全局变量看
,强烈不推荐
形参可以看做是函数的局部变量
变量访问规则:就近原则。先在当前作用域查找,如果当前没有,就想上继续查找,都没有就是undefined
匿名函数
没有名字的函数,无法直接使用
function() {}
使用方法:
- 函数表达式:将匿名函数赋值给一个变量,通过变量名进行调用
let fn=function(){}
fn() //匿名函数:调用,只能在声明后调用。
- 立即执行函数:避免全局变量之间的污染
(function(形参){函数体})(实参); //必须加分号,第二个小括号相当于在调用函数
逻辑中断
只存在于&&和||中,当满足一定条件会让右边代码不执行。
&&左边为false就中断,不再执行右边的内容,短路
||左边为ture就中断,不再执行右边的内容,短路
(11&&22)若两个都是真,返回最后的22值
(11||22)一真则真,就不再判断了,返回11
(false||0)第一个是假,第二个也是假,返回最后的假
转换成布尔型
Boolean(数据)
‘’ 空字符串、数字0、undefined、null、false、NaN都是false