• javascript 工作必知(四) 类型转换


    string和number boolean

                  javascript 类型会根据赋值的进行转成相应的类型。

            var str = "";
            alert(typeof (str));//string
            str = 5;
            alert(typeof (str));//number
            var sum = str + 5; //+编程两个数字相加
            alert(sum);//10
    

             这一种比较明显,一眼就可以计算出其值。但是请看下面这种转换

            var sum = "7" + "5";
            alert(typeof (sum)); //string
            alert(sum);//75

                  var sum = "7" + 5;
                  alert(typeof (sum)); //string
                  alert(sum);//75

         

         var sum = 5 + "7";
         alert(typeof (sum));//string
         alert(sum);

            var area = "7" * "5";
            alert(typeof (area)); //number
            alert(area);//35
    
            var sub = "7" - "5";
            alert(typeof (sub)); //number
            alert(sub);//2
    
            var div = "7" / "5";
            alert(typeof (div));//number
            alert(div);//1.4
    

      number 类型如果和string 类型"+", 将会直接number转成string

         上述中“+” 比较特殊,如果是- 、* 、/ 呢;那么最终会转成什么类型呢。

       

            var area = "7" * "a";
            alert(typeof (area));//number
            alert(area);//NaN
    
           
    
            var sub = "a" - "7";
            alert(typeof (sub));//number
            alert(sub);//NaN
    
             sub = "a" - 7;
            alert(typeof (sub));//number
            alert(sub);//NaN
    
            var div = "7" / "a";
            alert(typeof (div));//number
            alert(div);//NaN
    
             div = "a" / 7;
            alert(typeof (div));//number
            alert(div);//NaN
    

      如上 - 、*、/   是number 中算术具有的。string和number是不能进行运算的,所以其值都是NaN。类型number。

            var a = true;
            alert(typeof(a));//boolean
            var b = "true";
            var ab = a + b;
            alert(typeof (ab));//string
            alert(ab); //truetrue
            alert(a == b);//false
    

          boolean 和 string ,boolean类型自动转成了字符串“true”,但是为什么a不等于b

             大家看下这个例子:

            var c = "1";
            alert(typeof(c));//string
            var d = 1;
            alert(typeof (d));//number
            alert(c == d);//true
    

        这里给出了转换的原则:(供参考)

          1. 如果有一个操作数是布尔值,则在比较相等之前将其转换为数值————false转换为0,true转换为1;
          2. 如果一个操作数是字符串,另一个操作符是数值,则在比较相等之前先讲字符串转换为数值;
          3. 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。

          那么在比较字符串和布尔类型是就会:

           发生这样的转换: Boolean true先转成number  1,在转成字符串“1” ,在进行比较。结果肯定是 false 了。

    null 和string number Boolean undefined

       

            var a = null;
            alert(typeof (a));//object
    
            var b = "hello";
            var ab = a + b;
            alert(typeof (ab));//string
            alert(ab); //nullhello
    
            var c = 5;
            var ac = a * c;
            alert(typeof (ac)); //number
            alert(ac);//0
    
          
            if (a ) //false
            {
    
            } else
            {
                alert("false");
            }
           
    
            var u;
    
            alert(a == u); //true
    

      从给出的例子可以看出:

         null 在 string中 自动转成字符串"null" , 在number中表示数字 0,在逻辑判断中相当于false,在值表示时  和undefined 一样。注意是== 而不是===。

         虽然javascript 在进行比较时,== 转换了其比较类型,但是其变量类型并没有因为== 而发生改变。

      

  • 相关阅读:
    基于struts2和hibernate的登录和注册功能——完整实例
    (转载)Hibernate的事务管理
    (转载)hibernate缓存
    Hibernate映射解析——七种映射关系
    Hibernate核心组件详解
    Struts2国际化——完整实例代码
    Struts2的手工自定义验证--完整实例代码
    Struts2内置校验器——完整实例代码
    Struts2自定义拦截器——完整实例代码
    Struts2工作原理及流程
  • 原文地址:https://www.cnblogs.com/fandong90/p/5537917.html
Copyright © 2020-2023  润新知