JavaScript核心语法————数据类型转化、运算符、表达式

1. ***数据类型转换:
    ***js是弱类型语言:3方面:
       1. 声明变量时,不需要规定变量存储的数据类型
       2. 赋值时,才动态判断数据的类型。
          同一个变量,先后可保存不同类型的值
       3. ***js在需要时,自动转换数据的类型


    2大类转换方式:隐式转换和强制转换
     1. 隐式转换:不需要程序员干预,js自动完成的类型转换
          隐式转换无处不在,只要js认为有必要。
        仅讨论算数计算中的隐式转换:
          1. 算数计算中,一切数据都默认转为数字,再计算
Boolean类型:true-->1  false-->0
    特殊情况:如果数据无法被转为数字类型
                 会被转为NaN:Not a Number
                       表示 不是一个数字 的 数字
                                (含义)    (类型)
              NaN不等于,不大于,不小于任何值
              NaN参与任何算数运算结果永远为NaN
          2. 在+运算中,碰到字符串,+就变为字符串拼接
             另一个不是字符串的数据,被自动转为字符串

        表达式:变量,数据和运算符组成的公式
              默认都是从左向右,两两运算
              任何表达式都有1个运算结果
                  所以任何表达式都可以当一个值使用


     2. 强制转换:程序员主动调用专门的函数,执行转换
         何时使用:自动转换的类型,不是想要的
         任意-->字符串:2个API
            x.toString(); x不是undefined或null时,才可用
            String(x) --> 相当于隐式转换-->万能
       
typeof(x)-->返回x的数据类型名称

         任意-->数字:3个API
   Number(x): 专用于将非字符串类型转数字
                       相当于隐式转换
           将字符串转为数字:2个API
            parseInt(str): 从第一个字符开始
                 整数      依次读取每个数字
                         只要碰上第一个非数字字符就停止
                           自动跳过开头的空字符
                        ***不认识小数点
             何时使用:将字符串转为整数时
            parseFloat(str):用法同parseInt
                浮点数   ***认识第一个小数点
             何时使用:将字符串转为小数时

       Number(x) vs parseInt(str)
         var b=true;
         console.log(Number(b)) //1
         console.log(parseInt(String(b))) //NaN
                  "true"


         var width="60px";
	 console.log(Number(width)) //NaN
         console.log(parseInt(width)) //60
    任意类型-->Boolean: Boolean(x)-->相当于隐式转换
          只有5个值转为false:
            ""  NaN undefined null 0
          其余都转为true!

       快速转换:任意转String: x+"";
                 任意转Boolean: !!x

2. ***运算符和表达式:
    程序:*人脑的想法*在计算机中的执行
    运算符:让程序模拟人类想法的特殊符号
    表达式:变量,数据和运算符组成的公式
            所有表达式都有一个结果-->都可以当一个值用

    1. 算数运算:+ - * /   %  ++ --
%取余数(模运算):
比如:n%m n/m,不取商,而取除不尽的余数
        何时使用:2大用途:
           1. 判断能否整除:比如判断奇数,偶数
               n%2 等于0,可被2整除,——偶数
               n%2 不等0,不可被2整除,——奇数
           2. 保证运算结果绝不超过除数

        ++递增   --递减
        2种:都会将变量n中的值+1,再存会n中
    ++n : 表达式返回n的*新*值
             n++ : 表达式返回n的*旧*值

3. 关系运算:将两个值做比较-->返回值:true、false
     > < >= <= == !=
    ***关系运算中:
      1. 默认将所有类型转为数字再比较
      2. 如果参与比较的两值*都是字符串*
         依此取出每个字符串的字符,PK unicode
比如:var name1="scott";
              var name2="john";
              console.log(name1>name2);
    何时使用:只要判断条件,条件一般都为关系运算
    2个特殊情况:
     1. NaN:NaN不等于,不大于,不小于任何值(包括自己)
             NaN和任何数据做!=比较时,始终返回true
        问题:无法判断一个数字是否为数字
        解决:isNaN(n):本意是判断一个值是否是NaN
                  n是NaN,返回true;否则返回false
        如何判断一个值是否为数字:
              !isNaN(n)-->!true-->false-->n不是数字
                         !false-->true-->n是数字
     2. undefined vs null
        undefined: 所有未赋值的变量的默认值——自动赋值
        null:*主动*释放或清空一个变量中的值
        undefined和null其实是同一个东西
        全等:=== 首先类型相同,同时值相等
                 不带隐式转换的等于比较
          何时使用:区分undefined和null时
                    只要要求类型相同,且值相等时

2. 逻辑运算:将多个关系运算综合起来,得出最终结论
            返回值:true、false
    何时使用:程序中,只要判断条件超过1个时
    3种:&&   ||   !
         且   或   非
     &&:两个条件必须都为true,才返回true
         只要有一个为false,则返回false
     ||:两个条件只要有一个为true,就返回true
         除非所有条件都为false,才返回false
***短路逻辑:逻辑运算中,只要前一个条件已经可以得出最终结论,后续条件,不再执行!
    如何利用短路逻辑:
      1. 1件事,满足条件就做,不满足条件,就不错!
         条件&&(操作);
        何时使用:如果操作仅有一两句话时
      2. 如果前一个值有效,就用前一个,否则就用后一个
         值1||值2
***逻辑运算中的隐式转换:将所有参与逻辑判断的条件都转为Boolean类型。("" null undefined NaN 0)

3. 位运算:左移<<    右移>>
   n<<m: 将n的二进制数所有位,左移m位
          n*  2的m次方
   n>>m:  n/  2的m次方
4. 扩展赋值运算:+=  -=   *=   /=    %=
    n+=m: n=n+m 将n中的值增加m,再存回n中
    n*=m: n=n*m
   何时使用:今后,只要直接累加,累减,累乘原变量时
5. ***三目运算:三元运算,条件运算
     什么是:根据不同的条件,执行不同的操作/返回不同的值
     语法:
条件1?值1或操作1: //如果满足条件1,就返回值1或执行操作1
条件2?值2或操作2: //否则,如果满足条件2,就返回值2或执行操作2
  ...?..........:
    默认值或操作;  //否则,(前边条件都不满足)
                     //执行默认操作,或返回默认值
     总结:多个条件,多件事,多选一执行。
   js:如果操作语句比较简单,建议用三目运算替代if..else


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值