网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 javascript运算符语法全面概述
内容
    下面小编就为大家带来一篇javascript运算符语法全面概述。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。
    前面的话
    javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少。运算符始终都遵循着一些固定语法,只有了解并掌握这些内容,才能正确使用运算符。本文将主要介绍javascript运算符的语法概述
    操作数个数
    javascript的运算符总共有46个,如果根据其操作数的个数进行分类,则大多数是二元运算符(binary operator),它们的操作数都是两个,它们将两个表达式合并成复杂表达式
    1 + 2;
    true || false;
    javascript中的一元运算符(unary operator)将一个表达式转换为另一个稍复杂的表达式,主要包括以下9个:
    ++ -- - + ~ ! delete typeof void
    a++;
    typeof true;
    javascript只有一个三元运算符(ternary operator),是条件判断运算符?:,它将三个表达式合并成一个表达式
    2>1 ? 2 : 1;
    优先级  
    运算符优先级控制着运算符的执行顺序,优先级高的运算符的执行总是先于优先级运算符低的运算符
    46个运算符总共分为14级的优先级,从高到低依次是:
    ++ -- - + ~ ! delete typeof void
     * / %
     + -
     << >> >>>
     < <= > >= instanceof in
     == != === !==
     ^
     |
    ||
    ?:
    = *= /= %= += -= &= ^= |= <<= >>= >>>=
    ,
    由这14级的运算符优先级等级可以看出:
    一元运算符  > 算术运算符 > 比较运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符 > 逗号运算符  
    [注意]逻辑取反运算符属于一元运算符,其优先级最高
    例子
    !2<1&&4*3+1;
    像上面这种情况就比较复杂,逐步来分解其运算顺序
    先计算一元运算符!,!2;//false
    //于是表达式变为
    false < 1 && 4*3 + 1;
    计算算术运算符4*3+1;//13
    //于是表达式变为
    false < 1 && 13;
    计算比较运算符<,false<1;//true
    //于是表达式变为:
    true && 13;//13
    可以使用圆括号来强行指定运算次序
    2+3*5;//17
    (2+3)*5;//25;
    结合性  
    运算符具有两种结合性,一种是从左向右结合,记号为L,一种是从右向左结合,记号为R。结合性指定了在多个具有同样优先级的运算符表达式中的运算顺序
    多数运算符都具有从左向右的结合性,只有一元运算符、条件运算符和赋值运算符具有从右向左的结合性
    w = x + y + z;
    //等价于:
    w = ((x + y)+ z);
    --------------------------------------
    w = x = y = z;
    //等价于:
    w = (x = (y = z));
    --------------------------------------
    q = a ? b : c ? d : e ? f : g;
    //等价于:
    q = a ? b : (c ? d : (e ? f : g));
    运算符的优先级和结合性决定了它们在复杂表达式中的运算顺序,但子表达式相互有影响时,顺序会发生变化
    例子
    a = 1;
    b = a++ + a-- * a++;
    先分析该表达式中,根据优先级的顺序,分别运算递增运算符、乘法运算符、加法运算符和赋值运算符
    先计算第一个a++;//结果为1,a为2
    //表达式变成
    b = 1 + a-- * a++;
    计算a--;//结果为2,a为1
    //表达式变成
    b = 1 + 2 * a++;
    计算第二个a++;//结果为1,a为2
    //表达式变成
    b = 1 + 2 * 1;
    所以,最终a = 2; b = 3;
    a = 1;
    b = a++ + a-- * a++;
    console.log(a,b);//2 3
    -----------------------------------
    //类似地
    a = 1;
    b = a-- * a++ + a++;
    console.log(a,b);//2,1
    类型
    一些运算符可以作用于任何数据类型,但仍然希望它们的操作数是指定类型的数据,并且大多数运算符返回一个特定类型的值,在下面的运算符规则表中,箭头前为运算符操作数的类型,箭头后为运算结果的类型
    【左值】
    左值(lvalue)是一个古老的术语,指表达式只能出现在运算符的左侧
    在javascript中,变量、对象属性和数组元素都是左值
    递增运算符++、递减运算符--和赋值运算符的操作数类型是左值
    var a = 3;
    a++;//3
    3--;//报错
    ({}).a += '1';//'undefined1'
    'test' -= 'test';//报错
    运算符规则表
    运算符       操作         类型
    ++        增量         lval->num
    --        减量         lval->num
    -         求反         num->num
    +         转换为数字      num->num
    ~         按位求反       int->int
    !         逻辑非        bool->bool
    delete      删除属性       lval->bool
    typeof      检测类型       any->str
    void       返回undefined     any->undef
    ******************************************************
    * \ %       乘、除、求余      num,num->num
    ******************************************************
    + -        加、减        num,num->num
    +         字符串连接       str,str->str
    ******************************************************
    <<        左移位        int,int->int
    >>        有符号右移位      int,int->int
    >>>        无符号右移位      int,int->int
    ******************************************************
    < <= > >=     比较数字顺序      num,num->bool
    < <= > >=     比较字母表顺序     str,str->bool
    instanceof    测试对象类      obj,func->bool
    in        测试属性       str,obj->bool
    ******************************************************
    ==        判断相等       any,any->bool
    !=        判断不等       any,any->bool
    ===        判断恒等       any,any->bool
    !==        判断非恒等      any,any->bool
    ******************************************************
    &         按位与        int,int->int
    ******************************************************
    ^         按位异或       int,int->int
    ******************************************************
    |         按位或        int,int->int
    ******************************************************
    &&        逻辑与        any,any->any
    ******************************************************
    ||        逻辑或        any,any->any
    ******************************************************
    ?:        条件运算符       bool,any,any->any
    ******************************************************
    =         赋值         lval,any->any
    *= /= %=
    += -= &=     运算且赋值       lval,any->any
    ^= |= <<=
    >>= >>>=
    ******************************************************
    ,         忽略第一个操作数,    any,any->any
             返回第二个操作数
    以上这篇javascript运算符语法全面概述就是小编分享给大家的全部内容了,希望能给大家一个参考
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/17 20:55:13