运算符、条件语句、循环语句

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/weixin_42472040/article/details/86505737

目录

一、运算符(操作符)

计算运算符

比较运算符

逻辑运算符

逗号运算符

typeof操作符

二、条件语句

if语句

switch语句

三、循环语句

for循环

while循环

do/while循环

break和continue


一、运算符(操作符)

计算运算符

赋值的顺序自右向左,计算的顺序自左向右。

括号:优先级最高

等号:优先级最低

加号、减号、乘号、除号:加号还有字符串连接的作用,任何原始值加字符串都返回字符串类型

摩尔:求余数

自加:自身加1再赋给自身,++位置不固定,放前面先自加再执行语句,放后面先执行语句再自加,同理还有自减

加等于:加任意数再赋给自身,优先级和等号一样,同理的还有减等于、乘等于、除等于和摩等于

> var a = 10; 
> var b = ++a - 1 + a++;
> b + ',' + a    
< "21,12"
> var a = 2;
> var b = a-- -1;
< 1
> a += 10     ---> a = a + 10 
> a -= 10     ---> a = a - 10
> a *= 10     ---> a = a * 10
> a /= 10     ---> a = a / 10
> a %= 10     ---> a = a % 10
> a += 10 +1  ---> a = a + 10 +1
> var a = (10 * 3 -4 / 2 + 1) % 2, b = 3;
> b %= a + 3;
> console.log(a++)
> console.log(b--)
< 1  
< 3        
//交换a,b的值
> var a = 123,b = 234;
> a = a + b;
> b = a - b;
> a = a - b;

比较运算符

基本比较运算符:大于、小于、等于、大于等于、小于等于、不等于

消除隐式转换的比较运算符:绝对等于、绝对不等于

//基本比较运算符: >、 <、 ==、 >=、 <=、!=
//消除隐式转换的比较运算符:===、!==
var  a = 1 == 2; // false
var  a = undefined == undefined; //true
var  a = Infinity == Infinity ;  //true
var  a = NaN == NaN; //false 非数是唯一一个自己也不等于自己的
//字符串比较的是ASCII码

逻辑运算符

逻辑运算符有与、或、非三种。

与运算符

与运算符连接表达式形成短路语句。当前表达式为true则继续看后面的,为false则中断并返回当前表达式的值。与运算符形成的短路语句是if语句的一种简写形式。

> var a = 1 && 2; //相当于if(1){ a = 2 }
> a
< 2
var a = 1 && 2 + 2;       //结果:4
var a = 1 + 1 && 1 - 1    //结果:0 
var a = 1 && true && 0;   //结果:0

或运算符

或运算符连接表达式形成短路语句。当前表达式为false则继续看后面的,为true则中断并返回当前表达式的值。

> var a = 1 || 2;  
< 1
//或运算符可以写兼容
div.onclick = function(e){  
        var event = e;//非ie
        var event2 = window.event;//ie
        var event3 = e || window.event; // ie和非ie都可以
}
// e是一个事件对象
// 非ie浏览器里面,var event = e 就可以取到e的值,
// ie浏览器中e里面没东西,但是window.event里面存放着和e相同的内容

非运算符

把对象转换成布尔值后取反。undefined、null、NaN、""(空串)、0、false 六个值转换的布尔值为false,其余所有转换的布尔值均为true。

> var a = !""
< true

> var a = !123
< false

> var a = !!""
< false

逗号运算符

逗号运算符可以将若干个表达式连接起来按顺序执行,并获得最右边表达式的值。它的优先级仅比等号高。

> var a = ( function f(){ return "1"} , function g(){ return 2 } )(); 
> a
< 2
> 1,2,3
< 3

typeof操作符

js中有六种数据类型分别是number、string、boolean、undefined、object、function。js是一门弱语言,声明变量时无需确定变量类型,js会在运行时自动判断。typeof运算符可以用来判断对象的类型,返回的是六种数据类型的字符串形式。typeof有两种形式,其一后面加括号,其二后面加空格。

//typeof除了后面加括号外后面还可以加空格作为运算符。
> typeof(123)
< "number"
// =>  
> typeof 123 
< "number"
> typeof("123")        ---> "string"
> typeof({})           ---> "object"
> typeof([])           ---> "object"
> typeof(null)         ---> "object" 
> typeof(undefined)    ---> "undefined"
> typeof(function(){}) ---> "function" 

null虽是原始值,但用typeof检测的结果是object类型,这涉及到浏览器的一个历史遗留问题。最早null是以一种代替空对象的形式出现的,用来给对象占位。所以浏览器认为null是一个对象。

typeof是唯一一种使用未定义变量不报错的,打印结果为“undefined”。

typeof(a) ---> "undefined" //a没有声明,不会报错

console.log(typeof(typeof(a))) ---> "string   "

二、条件语句

if语句

基于不同条件执行不同的动作。

if(true){

}

switch语句

基于不同条件来执行不同的动作。首先设置表达式n(通常是一个变量),随后表达式的值会与结构中的每个case值做比较(case里面可以放任何类型的值),如果存在匹配,则与该case关联的代码块会被执行。case语句执行完后会默认继续执行下一个case的代码块,需要使用break来跳出switch语句。使用default关键词来规定匹配不存在时做的事情。

//标准形式
switch(n){
    case 1:
        代码块; break;
    case 2:
        代码块; break;
    default:
        代码块; break;
}
switch(date){
    case 1:
    case 2:
        代码块; break;
    default:
        代码块; break;
}
//case1和case2会都会执行表达式2,这种方式也是可行的,用来避免重复代码

三、循环语句

for循环

for循环共三个参数,第一个和第三个参数可以不放在for后面的括号中。第二个参数是一个表达式,只要对应的布尔值为true就可以执行循环体内的语句。

for(var i = 0; i < 10; i++){

}  
//<=>
var i = 0; 
for(; i < 10;){  //此时的for循环就相当于while循环
    i++;
}   
//要求打印出0-100?
var i = 101; 
for(;i--;){ 
    console.log(i);
} 
//i等于0时,for循环停止

while循环

while循环的底层机制就是for循环,while循环是for循环的简化版。

while(){ } <=> for(; true; ){ } //while循环是for循环的简化版
> var n = 1;
> while( n-- ){
     console.log(n);
  }
//注意n--是在判断完表达式的布尔值后就执行,也就是说在第一次执行方法体之前就先执行了一次n--操作
< 0

do/while循环

do/while循环和while循环是一个机制,while循环是满足条件时执行,do/while循环不管是否满足条件,先执行一次,判断成立后再执行第二次。不推荐使用。

break和continue

break终止循环语句并跳出整个循环。continue终止本次循环并进入下次循环。break和continue必须放在循环里,否则报错。

猜你喜欢

转载自blog.csdn.net/weixin_42472040/article/details/86505737