• js 基础语法


    运算符

    运算符也称为操作符
    通过运算符可以对一个或多个值进行运算或操作

    typeof运算符

    用来检查一个变量的数据类型
    语法:typeof 变量
    它会返回一个用于描述类型的字符串作为结果

    算数运算符

    + 对两个值进行加法运算并返回结果
    - 对两个值进行减法运算并返回结果
    * 对两个值进行乘法运算并返回结果
    / 对两个值进行除法运算并返回结果
    % 对两个值进行取余运算并返回结果

    除了加法以外,对非Number类型的值进行运算时,都会先转换为Number然后在做运算。
    而做加法运算时,如果是两个字符串进行相加,则会做拼串操作,将两个字符连接为一个字符串。
    任何值和字符串做加法,都会先转换为字符串,然后再拼串

    一元运算符

    一元运算符只需要一个操作数

    一元的 +

    就是正号,不会对值产生任何影响,但是可以将一个非数字转换为数字,隐式转换
    例子:

    var a = true;  
    a = +a;  // 1
    
    a = 1 + +"2" + 3; // 6
    

    一元的 -

    就是负号,可以对一个数字进行符号位取反
    例子:

    var a = 10;  
    a = -a;  // -10
    

    自增

    自增可以使变量在原值的基础上自增1
    自增使用 ++
    自增可以使用 前++(++a)后++(a++)
    无论是++a 还是 a++都会立即使原变量自增1
    不同的是++a和a++的值是不同的,
    ++a的值是变量的新值(自增后的值)
    a++的值是变量的原值(自增前的值)

    自减

    自减可以使变量在原值的基础上自减1
    自减使用
    自减可以使用 前(a)后(a)
    无论是a 还是 a都会立即使原变量自减1
    不同的是a和a的值是不同的,
    a的值是变量的新值(自减后的值)
    a的值是变量的原值(自减前的值)

    逻辑运算符

    !
    非运算可以对一个布尔值进行取反,true变false,false变true
    当对非布尔值使用 ! 时,会先将其转换为布尔值然后再取反
    我们可以利用 ! 来将其他的数据类型转换为布尔值

    &&
    &&可以对符号两侧的值进行与运算
    只有两端的值都为true时,才会返回true。只要有一个false就会返回false。
    与是一个短路的与,如果第一个值是false,则不再检查第二个值
    对于非布尔值,它会将其转换为布尔值然后做运算,并返回原值
    规则:
    1.如果第一个值为false,则返回第一个值
    2.如果第一个值为true,则返回第二个值

    ||
    ||可以对符号两侧的值进行或运算
    只有两端都是false时,才会返回false。只要有一个true,就会返回true。
    或是一个短路的或,如果第一个值是true,则不再检查第二个值
    对于非布尔值,它会将其转换为布尔值然后做运算,并返回原值
    规则:
    1.如果第一个值为true,则返回第一个值
    2.如果第一个值为false,则返回第二个值

    赋值运算符

    =
    可以将符号右侧的值赋值给左侧变量
    +=

    a += 5 相当于 a = a+5    
    var str = "hello";  str += "world";  
    

    -=

    a -= 5  相当于 a = a-5  
    

    *=

    a *= 5 相当于 a = a*5  
    

    /=

    a /= 5 相当于 a = a/5	  
    

    %=

    a %= 5 相当于 a = a%5 
    

    关系运算符

    关系运算符用来比较两个值之间的大小关系的
    >
    >=
    <
    <=
    关系运算符的规则和数学中一致,用来比较两个值之间的关系,
    如果关系成立则返回true,关系不成立则返回false。
    如果比较的两个值是非数值,会将其转换为Number然后再比较。
    如果比较的两个值都是字符串,此时会比较字符串的Unicode编码,而不会转换为Number。

    Unicode编码

    Unicode编码又称 万国码
    JavaScript 底层编码就是 Unicode

    所以,Unicode里有点字符都可以使用

    在字符串中使用:在16进制编码前加 u

    console.log("u2620");
    

    也可以在html 中当做实体转义符:在10进制编码前加 &#,最后以 ; 结尾

    <span> &#9760; </span>
    

    相等运算符

    相等,判断左右两个值是否相等,如果相等返回true,如果不等返回false
    相等会自动对两个值进行类型转换,如果对不同的类型进行比较,会将其转换为相同的类型然后再比较,转换后相等它也会返回true,null == undifined

    !=
    不等,判断左右两个值是否不等,如果不等则返回true,如果相等则返回false
    不等也会做自动的类型转换。

    ===
    全等,判断左右两个值是否全等,它和相等类似,只不过它不会进行自动的类型转换,
    如果两个值的类型不同,则直接返回false

    !==
    不全等,和不等类似,但是它不会进行自动的类型转换,如果两个值的类型不同,它会直接返回true

    特殊的值:
    null 和 undefined
    由于undefined 衍生自 null,所以null == undefined 会返回true。
    但是 null === undefined 会返回false。
    NaN
    NaN不与任何值相等,报告它自身 NaN == NaN; //false

    判断一个值是否是NaN
    使用isNaN()函数

    三元运算符:

    ? :
    语法:条件表达式?语句1:语句2;
    执行流程:
    先对条件表达式求值判断,
    如果判断结果为true,则执行语句1,并返回执行结果
    如果判断结果为false,则执行语句2,并返回执行结果

    优先级:
    和数学中一样,JS中的运算符也是具有优先级的,
    比如 先乘除 后加减 先与 后或
    具体的优先级可以参考优先级的表格,在表格中越靠上的优先级越高,
    优先级越高的越优先计算,优先级相同的,从左往右计算。
    优先级不需要记忆,如果越到拿不准的,使用 () 来改变优先级。

    流程控制语句

    程序都是自上向下的顺序执行的,
    通过流程控制语句可以改变程序执行的顺序,或者反复的执行某一段的程序。

    运算符的优先级

    1. .、[]、new
    2. ()
    3. ++、--
    4. !、~、+(单目)、-(单目)、typeof、void、delete
    5. %、*、/
    6. +(双目)、-(双目)
    7. << 、>>、>>>
    8. <、<=、>、>=
    9. ==、!==、===
    10. &
    11. ^
    12. |
    13. &&
    14. ||
    15. ?、:
    16. =、+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=、|=
    17. ,

    条件分支语句

    条件判断语句也称为if语句
    语法一:

    if(条件表达式){  
    	语句...  
    }  
    

    执行流程:
    if语句执行时,会先对条件表达式进行求值判断,
    如果值为true,则执行if后的语句
    如果值为false,则不执行

    语法二:

    if(条件表达式){  
    	语句...  
    }else{  
    	语句...  
    } 
    

    执行流程:
    if...else语句执行时,会对条件表达式进行求值判断,
    如果值为true,则执行if后的语句
    如果值为false,则执行else后的语句

    语法三:

    if(条件表达式){  
    	语句...  
    }else if(条件表达式){  
    	语句...  
    }else if(条件表达式){  
    	语句...  
    }else if(条件表达式){  
    	语句...  
    }else{  
    	语句...  
    }	  
    

    执行流程
    if...else if...else语句执行时,会自上至下依次对条件表达式进行求值判断,
    如果判断结果为true,则执行当前if后的语句,执行完成后语句结束。
    如果判断结果为false,则继续向下判断,直到找到为true的为止。
    如果所有的条件表达式都是false,则执行else后的语句

    1.条件分支语句
    switch语句
    语法:

    switch(条件表达式){  
    	case 表达式:  
    		语句...  
    		break;  
    	case 表达式:  
    		语句...  
    		break;  
    	case 表达式:  
    		语句...  
    		break;  
    	default:  
    		语句...  
    		break;  
    }  
    

    执行流程:
    switch...case...语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较,
    如果比较结果为false,则继续向下比较。如果比较结果为true,则从当前case处开始向下执行代码。
    如果所有的case判断结果都为false,则从default处开始执行代码。

    循环语句

    通过循环语句可以反复执行某些语句多次
    while循环
    语法:

    while(条件表达式){  
        语句...  
    }  
    

    执行流程:
    while语句在执行时,会先对条件表达式进行求值判断,
    如果判断结果为false,则终止循环
    如果判断结果为true,则执行循环体
    循环体执行完毕,继续对条件表达式进行求值判断,依此类推

    do...while循环
    语法:

    do{  
    语句...  
    }while(条件表达式)  
    

    执行流程
    do...while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断,
    如果判断判断结果为false,则终止循环。
    如果判断结果为true,则继续执行循环体,依此类推

    和while的区别:
    while:先判断后执行
    do...while: 先执行后判断
    do...while可以确保循环体至少执行一次。

    for循环
    语法:

    for(①初始化表达式 ; ②条件表达式 ; ④更新表达式){  
        ③语句...  
    }  
    

    执行流程:
    首先执行①初始化表达式,初始化一个变量,
    然后对②条件表达式进行求值判断,如果为false则终止循环
    如果判断结果为true,则执行③循环体
    循环体执行完毕,执行④更新表达式,对变量进行更新。
    更新表达式执行完毕重复②

    死循环

    while(true){  
    
    }  
    
    for(;;){  
    
    }
    
  • 相关阅读:
    RTSP协议视频智能分析平台EasyNVR新增H265播放器EasyPlayer和EasyWasmPlayer的区别介绍
    RTSP拉流协议视频平台EasyNVR硬件设备意外断电重启无法进入initramfs界面配置如何解决?
    RTSP拉流协议视频平台EasyNVR多点认证造成潜在威胁?EasyNVR多点认证机制优化
    【BUG修复】网络流媒体协议RTSP拉流平台EasyNVR增加鉴权抵御外部攻击优化
    RTSP视频平台EasyNVR作为下级平台通过GB28181级联传输视频流时的多播Multicast协议介绍
    【硬件设备】RTSP协议安防视频平台EasyNVR视频边缘计算网关设备如何关闭图形化网卡配置功能?
    【硬件设备】RTSP协议安防视频平台EasyNVR视频边缘计算网关设备修改/etc/network/interfaces后配置界面消失如何修复?
    RTSP协议视频智能分析/内容识别平台EasyNVR安防视频云服务关于POST接口C#调用的例子介绍说明
    RTSP协议视频智能分析/智能识别系统EasyNVR新增演示模式下用户登录有效期限时5分钟说明
    RTSP协议视频智能分析/智能识别服务平台EasyNVR新增自定义登录失败锁定用户功能
  • 原文地址:https://www.cnblogs.com/Liwker/p/14368811.html
Copyright © 2020-2023  润新知