• Python学习第77天(js数据类型、运算符)


      之前的java部分残存的记忆,算是帮了大忙,今天看视频里面叨叨了很久object的问题,表示毫无压力。

      一、数据类型:

        1.布尔型(Boolean)

        Boolean类型仅有两个值:true和false,也代表1和0,实际运算中true=1,false=0

        布尔值也可以看作on/off、yes/no、1/0对应true/false

        Boolean值主要用于JavaScript的控制语句,例如

          if (x==1){
            y=y+1;
            }else {
            y=y-1;
            }

        2.Null & Undefined

        Undefined 类型

          Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

          当函数无明确返回值时,返回的也是值 "undefined";

        Null 类型

          另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

          尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

          var person=new Person()  java和JavaScript中实例化对象过程和Python中的不同点,需要增加new

          var person=null

      二、数据类型转换

        JavaScript属于松散类型的程序语言

          变量在声明的时候并不需要指定数据类型

          变量只有在赋值的时候才会确定数据类型

          表达式中包含不同类型数据则在计算过程中会强制进行类别转换

          数字 + 字符串:数字转换为字符串

          数字 + 布尔值:true转换为1,false转换为0

          字符串 + 布尔值:布尔值转换为字符串true或false

        强制类型转换函数

          函数parseInt: 强制转换成整数 例如parseInt("6.12")=6 ; parseInt(“12a")=12 ; parseInt(“a12")=NaN ;parseInt(“1a2")=1

          函数parseFloat: 强制转换成浮点数 parseFloat("6.12")=6.12

          函数eval: 将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true

        类型查询函数(typeof)

          ECMAScript 提供了 typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型:如果它是原始类型,还可以判断它表示哪种原始类型。

          函数typeof :查询数值当前类型
 (string / number / boolean / object )

          例如typeof("test"+3) "string"

          例如typeof(null) "object "     后续会有针对object的类型查找,因为这个object中包含了列表、字典

          例如typeof(true+1) "number"

          例如typeof(true-false) "number"

      三、运算符

        (一)ECMAScript 算数运算符————很easy

          加(+)、 减(-)、 乘(*) 、除(/) 、余数(% ) 加、减、乘、除、余数和数学中的运算方法一样 例如:9/2=4.5,4*5=20,9%2=1

          -除了可以表示减号还可以表示负号 例如:x=-y

          +除了可以表示加法运算还可以用于字符串的连接 例如:"abc"+"def"="abcdef"

        (二)递增(++) 、递减(--)

          假如x=2,那么x++表达式执行后的值为3,x--表达式执行后的值为1

          i++相当于i=i+1,i--相当于i=i-1

          递增和递减运算符可以放在变量前也可以放在变量后:--i

        (三)一元加减法:

      

    var a=1;
        var b=1;
        a=-a;  //a=-1
    
        var c="10";
        alert(typeof (c));
        c=+c;    //类型转换
        alert(typeof (c));
    //    -------------------
        var d="yuan";
        d=+d;
        alert(d);//NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据
        alert(typeof(d));//Number
    
        //NaN特点:    
        var n=NaN;    
        alert(n>3);
        alert(n<3);
        alert(n==3);
        alert(n==NaN);    
        alert(n!=NaN);//NaN参与的所有的运算都是false,除了!=

        NaN和谁比较都是的false,包括和自己

        (四)逻辑运算符

          等于 ( == ) 、不等于( != ) 、 大于( > ) 、 小于( < ) 
大于等于(>=) 、小于等于(<=)

          与 (&&) 、或(||) 、非(!)

          逻辑 AND 运算符(&&)

            逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。

            如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

            如果某个运算数是 null,返回 null。 

            如果某个运算数是 NaN,返回 NaN。 

            如果某个运算数是 undefined,返回undefined。 

          逻辑 OR 运算符(||)

            与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值

        (五)赋值运算符

          执行类型转换的规则如下:

            如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。 

            如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。 

            如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。 

            如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。 

          在比较时,该运算符还遵守下列规则:

            值 null 和 undefined 相等。 

            在检查相等性时,不能把 null 和 undefined 转换成其他值。 

            如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。 

            如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。 

                                

        (六)关系运算符(重要)      

    var bResult = "Blue" < "alpha";
    alert(bResult); //输出 true 

          在上面的例子中,字符串 "Blue" 小于 "alpha",因为字母 B 的字符代码是 66,字母 a 的字符代码是 97。

          比较数字和字符串

          另一种棘手的状况发生在比较两个字符串形式的数字时,比如:

    var bResult = "25" < "3";
    alert(bResult); //输出 "true"

            上面这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。

          不过,如果把某个运算数该为数字,那么结果就有趣了:

    var bResult = "25" < 3;
    alert(bResult); //输出 "false"

          这里,字符串 "25" 将被转换成数字 25,然后与数字 3 进行比较,结果不出所料。

            总结:

              比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.

              比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较。

        (七)Boolean运算符(重要)

    var temp=new Object();// false;[];0; null; undefined;object(new Object();)
    
        if(temp){
            console.log("yuan")
        }else {
            console.log("alex")
        }

        等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

        以上就是今天的内容,不管怎么说,自己的拖延症到了不治不行的时候了。。。    

  • 相关阅读:
    虫食算(暴力搜索)
    P3909 异或之积
    P1171 售货员的难题 暴力dp
    P2657 [SCOI2009]windy数
    【luogu P1726 上白泽慧音】 题解
    【luogu P2146 [NOI2015]软件包管理器】 题解
    莫队算法~讲解【更新】
    【luogu P1113 杂务】 题解
    【luogu P1268 树的重量】 题解
    【luogu P4114 Qtree1】 题解
  • 原文地址:https://www.cnblogs.com/xiaoyaotx/p/12892408.html
Copyright © 2020-2023  润新知