JavaScript运算符及语句
运算符
一套对数据进行运算的运算符,可以对一个或多个值进行运算,并获得运算结果
typeof
运算符
使用
typeof
操作符可以用来检查一个变量的数据类型,将值的类型以字符串的形式返回使用方式
//typeof 数据 typeof 123
返回结果
typeof
数值number
typeof
字符串string
typeof
布尔型boolean
typeof
undefinedundefined
typeof
nullobject
算数运算符
顾名思义就是进行算数操作的运算符
当对非
Number
类型的值,会先转换为Number
,然后再进行运算任何值和
NaN
做运算 都为NaN
对于String 类型,进行拼接
任何值和字符串相加,都会先转换成字符串,然后再进行拼接
c= c+""
;转换为字符串可以通过一个值-0 *1 /1来将其转换为Number
运算符 | 说明 | 运算符 | 说明 |
---|---|---|---|
+ | 加法 | ++(前置) | 自增 |
- | 减法 | ++(后置) | 自增 |
* | 乘法 | –(前置) | 自减 |
/ | 除法 | –(后置) | 自减 |
% | 取模 | + 正 | 符号不变 |
- 负 | 符号反转 |
自增和自减
- 自增 ++ 自减 –
- 自增和自减分为前置运算和后置运算。
- 所谓的前置元素就是将元素符放到变量的前边,而后置将元素符放到变量的后边。
- 例子:
- 前置自增:++a
- 后置自减:a–
- 运算符在前置时,表达式值等于变量原值。
- 运算符在后置是,表达式值等于变量变更以后的值。
逻辑运算符
一般情况下使用逻辑运算符会返回一个布尔值。
逻辑运算符主要有三个:非、与、或。
在进行逻辑操作时如果操作数不是布尔类型则会将其转换 布尔类型在进行计算
非使用符号 ! 表示,与使用 && 表示,或使用 || 表示。
运算符 | 说明 | 短路规则 |
---|---|---|
! | 逻辑非(NOT) | 无 |
&& | 逻辑与(AND) | 若左值为假,则不运算右值 |
|| | 逻辑或(OR) | 若左值为真,则不运算右值 |
非
- 非运算符可以应用于任意值,无论值是什么类型,这个运算符都会返回一个布尔值
- 非运算符会对原值取反,比如原值是true使用非运算符会 返回false,原值为false使用非运算符会返回true
- 可以为一个任意数据类型取两次反,来将其转换为布尔值,
- 原理和Boolean()函数一样
与
- 与运算符可以应用于任何数据类型,且不一定返回布尔值
- 对于非布尔值运算,会先将非布尔值转换为布尔值
- 对布尔值做运算时,如果两个值都为true则返回true, 否则返回false
非布尔值时:如果两个都为true,则返回第二个值,如 果两个值中有false则返回靠前的false的值
JS中的“与”属于短路的与,
- 如果第一个值为false,则不会看第二个值
或
- 或运算符可以应用于任何数据类型,且不一定返回布尔值。
- 对于非布尔值运算,会先将非布尔值转换为布尔值
- 对布尔值进行运算时,如果两个值都为false则返回false, 否则返回true
非布尔值时:如果两个都为false ,则返回第二个值,否 则返回靠前true的值
JS中的“或”属于短路的或
如果第一个值为true,则不会检查第二个值
对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值
赋值运算符
的赋值操作符由等于号 (
=
) 表示,作用就是把右侧的值赋给左侧的变量复合赋值操作
- +=、 *= 、-= 、/=、%=
- 比如:a+=10和a=a+10是一样的
关系运算符
小于(<) 、大于(>) 、小于等于(<=)和大于等于(>=) 这几个关系运算符用于对两个值进行比较
- 非数值的情况
* - 对于非数值进行比较时,会将其转换为数字然后在比较
* - 如果符号两侧的值都是字符串时,不会将其转换为数字进行比较
* 而会分别比较字符串中字符的Unicode编码(按位比较)
这几个运算符都返回一个布尔值,用来表示两个值之间的关系 是否成立
//任何值和NaN做任何比较都是false //比较两个字符串时,比较的是字符串的字符编码 console.log("a" < "b");//true //比较字符编码时是一位一位进行比较 //如果两位一样,则比较下一位,所以借用它来对英文进行排序 console.log("abc" < "bcd");//true //比较中文时没有意义 console.log("戒" > "我"); //true //如果比较的两个字符串型的数字,可能会得到不可预期的结果 //注意:在比较两个字符串型的数字时,一定一定一定要转型 console.log("11123123123123123123" < +"5"); //true
相等
- JS中使用
==
来判断两个值是否相等,如果相等则返回 true。 - 使用
!=
来表示两个值是否不相等,如果不等则返回true。 - 当使用
==
或!=
来比较两个值时,如果类型不同,则会自动进行类型转换,将其转换为相同的类型,然后再比较
//null和undefined使用==判断时是相等的。 console.log(undefined==null); //NaN不和任何值相等,包括他本身 console.log(NaN == NaN); //false //可以通过isNaN() 函数来判断一个值是否是NaN console.log(isNaN(b)); console.log(true=="1");//true
- JS中使用
全等
===
表示全等,他和==基本一致,不过==在判断两个值 时会进行自动的类型转换
,而===
不会- 例如:
”55”==55
会返回true,而”55”===55
会返回 false !==
表示不全等,同样比较时不会自动转型
逗号
使用逗号可以在一条语句中执行多次操作。
比如:
var num1=1, num2=2, num3=3
;使用逗号运算符分隔的语句会从左到右顺 序依次执行。
条件运算符
三元运算符,写为
条件语句?语句1:语句2 条件判断为true则执行语句1,否则执行语句2 ,并将结果返回
运算符的优先级
- 若要优先进行运算,直接添加小括号
语句
- 语句是一个程序的基本单位,JS的程序就是由一条一条 语句构成的,每一条语句使用
;
结尾 - JS中的语句默认是由上至下顺序执行的,但是我们也可 以通过一些流程控制语句来控制语句的执行顺序
条件语句(流程控制语句)
if-else语句
if(age>0){
alert("age=1");
}else {
alert("dont");
}
if-else if…else
if(age < 18){
alert("你还未成年!");
}else if(age <= 30){
alert("您已经是个青年了!");
}else{
alert("你已经是个中年了!");
}
switch—case语句
语法:
switch(变量){ case 表达式1: 语句... case 表达式2: 语句... default: 语句... }
- 需要注意的是case语句只是标识的程序运行的起点,并不是终 点,所以一旦符合case的条件程序会一直运行到结束。所以我 们一般会在case中添加break作为语句的结束。
- 变量与表达式关系是全等的匹配
if和switch的比较
一般情况下,它们两个语句可以相互替换
if和switch都是分支结构,用于判断不同的情况,做出不同的应答
if更适用于判断数值不明确,比如大于小于等情况
switch适用于固定数值的时候
循环语句
- 循环中的语句只要满足一定的条件将会一 直执行
while循环
语法
while(条件表达式){ 语句... }
和if一样while中的条件表达式将会被转换为布尔类型,只 要该值为真,则代码块将会一直重复执行。
do—while
语法
do{ 语句... }while(条件表达式);
do…while循环会至少执行一次。
for循环
四要素
- 初始化条件
- 循环条件
- 循环体
- 迭代条件
语法
for(初始化表达式 ; 条件表达式 ; 更新表达式){ 语句... 循环体 }
break和continue
break
:会使程序跳出循环continue
:使用continue语句会使程序跳过当次循环,继续执行下一次循环,并不会结束整个循环
continue只能在循环中使用,不能出现在其他的结构中
练习:
//用户输入一个数,判断是否是质数
// 方式一
var num = Number(prompt("请输入一个数:"));
for (var i = 2; i < num; i++) {
if (num % i == 0) {
break;
}
}
if (i == num) {
alert("是质数");
}
// 方式二
var flag = true;
for (var j = 2; j <= num / 2; j++) {
if (num % j == 0) {
flag = false;
}
}
if (flag) {
alert("是质数");
} else {
alert("不是质数");
}
label
使用 label 语句可以在代码中添加标签,以便将来使用
语法:
start: for (var i=0; i < count; i++) { alert(i); }
这个例子中定义的 start 标签可以在将来由 break 或 continue 语句 引用。加标签的语句一般都要与 for 语句等循环语句配合使用。