JavaScript运算符及语句


JavaScript运算符及语句

运算符

一套对数据进行运算的运算符,可以对一个或多个值进行运算,并获得运算结果

typeof运算符

  • 使用typeof操作符可以用来检查一个变量的数据类型,将值的类型以字符串的形式返回

  • 使用方式

    //typeof  数据 
    typeof 123
    
  • 返回结果

    • typeof 数值 number
    • typeof 字符串 string
    • typeof 布尔型 boolean
    • typeof undefined undefined
    • typeof null object

算数运算符

顾名思义就是进行算数操作的运算符

  • 当对非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
    
  • 全等

    • ===表示全等,他和==基本一致,不过==在判断两个值 时会进行自动的类型转换,而===不会
    • 例如:”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循环

四要素
  1. 初始化条件
  2. 循环条件
  3. 循环体
  4. 迭代条件
  • 语法

    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 语句等循环语句配合使用。


文章作者: 时光路人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路人 !
评论
  目录