JS-运算符(操作符)

JS-运算符(操作符)

运算符也叫操作符,通过运算符可以对一个或者多个值进行运算;

比如说,typeof就是一个运算符,获得一个值的类型,并将该值的类型以字符串的形式返回;

  1. 算数运算符

    +:加法运算符,对符号两侧的两个值进行加法运算,并将结果返回;

    1. 当对非Number类型的值进行运算时,会将这些值转换为Number,然后再进行相加运算;

    2. 任何值和NaN进行运算都是NaN

    3. 两个字符串进行加法运算,则会做拼串,会将两个字符串拼接为一个字符串并返回;

    4. 任何值和字符换进行加法运算,都会首先转换为字符串,然后再进行拼串;可以利用将任意数据类型加上一个空字符串"",即可将其转换为String类型,这是一种隐式的类型转换,由浏览器自动完成;实际上也是调用String()函数;

    5. 也可以运用在输出中,使得输出结果更加可观,例如:console.log("c=" + c);

    6. JS在进行运算时,在无小括号的情况下,同级运算符下,运算顺序是由左向右进行运算的;

    -:减法运算符,对两个值进行减法运算,并将结果返回;

    ​ 1. 除了加法运算中,字符串都是转换为Number类型进行运算的;

    * :乘法运算,对两个值进行乘法运算,并将结果返回;

    1. 任何值做 减 乘 除 运算都会自动转换为Number类型,可以利用这个特性进行Number 类型转换;即 减0 乘1 除1 将其转换为Number类型;原理和Number()函数一样,使用起来更加简单;

    / :除法运算,对两个值进行除法运算,并将结果返回;

    % :取模运算(取余数运算)

  2. 一元运算符

    一元运算符:只需要一个操作数,即可以是变量本身;

    +:正号

    1. 不会对数值产生任何影响;

    2. 对于非Number类型的值,首先转换为数值在进行运算;

    3. 可以利用这个特性,+其他数据类型 将任意数据类型转换为Number类型,其原理和Number()函数一样;

    -:负号

    1. 可以对数字进行符号取反;

    2. 对于非Number类型的值,首先转换为数值在进行运算;

  3. 自增和自减运算

    自增运算符:++

    1. 通过自增可以使变量在自身的基础上增加1;

    2. 变量自增以后,原变量的值会立即自增1;

    3. 自增分为两种:后++(a++)和前++(++a),两种方式都会使得原变量的值自增1;但是不同的是 a++ 和 ++a 的值不同:

    ​ a++ 的值等于原变量的值,即自增前的值

    ​ ++a 的值等于原变量自增后的值,即自增后的值

    <script>
    	//自增练习
        var n1=10;
        var n=n1++;
        console.log(n1);//返回11
        console.log(n);//返回10
        var n=++n1;
        console.log(n1);//返回12
        console.log(n);//返回12
    </script>
    

    自减运算符:--

    1. 通过自减可以使变量在自身的基础上减1;

    2. 自减分为两种:后–(a–) 和 前–(--a),两种方式都会使得原变量的值自减1;不同的是a–和--a的值不同:

    ​ a-- 的值是等于原变量的值,即自减前的值

    ​ --a 的值是原变量自减后的值,即自减后的值

    <script>
    	//自减练习
        var n2=20;
        var n=n2--;
        console.log(n2);//返回19
        console.log(n);//返回20
        var n=--n2;
        console.log(n2);//返回18
        console.log(n);//返回18
    </script>
    
  4. 逻辑运算符

    JS中提供了三种逻辑运算符:与或非

    (1)布尔值的与或非运算

    ! 非运算符

    1. 可以用来对一个值进行非运算;

    2. 非运算对一个布尔值进行取反操作true—>false false—>true

    3. 对一个值进行两次非运算,还是原值;

    4. 如果对非布尔值进行运算,则会将其转换为布尔值,然后再取反;所以可以利用该特点,将其他数据类型转换为布尔类型,即对任意数据类型取两次非,将其转换为布尔类型,其原理和Boolean()函数一样;

    && 与运算符

    1. 可以对符号两侧的值进行与运算并返回结果;

    2. 布尔值运算规则

      两个值中有一个false,就返回false

      只有两个值都为true,就返回true

    3. JS中的与属于“短路与”,如果第一个值为false,则不会检查第二个值;

    || 或运算符

    1. 可以对符号两侧的值进行或运算并返回结果;

    2. 布尔值运算规则:

      只要有一个true,就返回true

      只有两个值都为false,就返回false

    3. JS中的或属于“短路或”,如果第一个值为true,则不会检查第二个值;

    (2)非布尔值的与或运算

    1. 对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值

    2. 对于与运算,如果两个值的布尔值都为true,则返回后边数据的原值;如果其中一个值的布尔值为false,则返回布尔值为false的原数据;如果两个值的布尔值都为false,则返回布尔值为false的前边的原数据;简单概括:

      如果第一个值的布尔值为true,则必然返回第二个值;

      如果第一个值的布尔值为false,则直接返回第一个值;

    3. 对于或运算

      如果第一个值的布尔值为true,则直接返回第一个值;

      如果第一个值的布尔值为false,则直接返回第二个值;

  5. 赋值运算符

    =:可以将符号右侧的值赋值为符号左侧的变量;

    +=:即 a+=5等效于 a=a+5; +=是一个运算符,中间不可有空格

    -=:即 a-=5 等效于a=a-5;

    *=:即 a*=5 等效于 a=a*5;

    /=:即a/=5 等效于 a=a/5;

    %=:即a%=5等效于 a=a%5;

  6. 关系运算符

    关系运算符可以比较两个值之间的大小关系;如果关系成立,它会返回true;否则返回false

    (1)数值情况下:

    > :大于号,判断左侧的值是否大于右侧的值;关系成立返回true

    >= :大于等于号,判断左侧的值是否大于或者等于右侧的值;关系成立返回true

    < :小于号,判断左侧的值是否小于右侧的值;关系成立返回true

    <= :小于等于号,判断左侧的值是否小于或者等于右侧的值;关系成立返回true

    (2)非数值情况下:

    —对于非数值进行关系运算时,会将非数值类型的数据转换为数值,在进行比较;

    任何值和NaN做比较都是false,即数值和非数值型字符串进行比较时,是false

    —特殊情况,如果符号两侧的值都是字符串,不会将其转换为数字比较,而是比较字符串中的 Unicode编码;比较字符编码时,是逐位比较,如果两位大小一样,则按照从左向右依次比较下一位;可以借用这个特性对英文进行排序;比较中文无意义;

    —如果比较两个字符串型的数字,可能得到不可预期的结果:例如:

    “11” < “5” 返回 true :首先比较第一个,“1"的Unicode编码小于"5"的Unicode编码,因此"11” < "5"成立;

    —注意在比较两个字符串型的数字时,一定要进行转型:“11” < +“5” 返回false+"5"转换为数值型,因此进行比较时,会将字符串转换为数值,在进行比较;

  7. Unicode编码

    (1)如何在JS中输出Unicode编码对应的字符,语法:\u四位编码;使用转义字符\u+四位Unicode编码;

    例如:

    console.log("\u2620");
    

    (2)如何在网页html中使用Unicode编码:&#十进制编码;

    例如:

    <h1>&#9760;</h1>
    
  8. 相等和全等运算符

    相等运算符:比较符号两侧的值是否相等,如果相等返回true,否则返回false;使用 == 进行相等运算比较;

    —进行相等运算比较时,如果符号两侧的值类型不同,则自动转换相同类型进行比较;

    Undefined衍生自Null,所以这两个类型的数据做相等运算,会返回true

    NaN不和任何值相等,包括它本身;可以通过isNaN()函数判断一个值是否是NaN,如果该值为NaN则返回true

    不等运算符:判断两个值是否不相等,如果不相等则返回true,否则返回false;使用 != 进行不等运算比较;

    —进行不等运算比较时,如果符号两侧的值类型不同,则自动转换相同类型进行比较;如果转换后,两个数据相等,则返回false

    全等运算符:判断两个值是否全等,与相等运算符类似,不同的是不会做自动类型转换;如果两个值的类型不同,直接返回false;全等运算符===;

    不全等运算符:判断两个值是否不全等,和不等运算类似,不同的是不会进行自动类型转换;如果两个值的类型不同,直接返回true;不全等运算符!==;

  9. 条件运算符

    条件运算符也叫三元运算符;

    —语法:条件表达式?语句1:语句2;

    —条件运算符执行过程:首先对条件表达式进行求值;如果该值为true,则执行语句1,并返回执行结果;如果该值为false,则执行语句2,并返回执行结果;

    —如果条件表达式的结果是一个非布尔值,则会将其转换为布尔值然后在进行运算;

  10. 运算符优先级

—先乘除在加减;

与运算优先级高于或运算优先级;

—在JS中有一个符号优先级的表,在表中位置越靠上,优先级越高,越优先计算;如果优先级相同,则从左向右进行计算;

—但是这个表并不需要记,如果遇到优先级不清楚的,可以使用小括号()改变优先级进行优先计算;

—使用逗号,可以分割多个语句,例如:一般在声明多个变量并进行赋值时使用;var a=1,b=3,c=2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值