精华内容
下载资源
问答
  • javascript隐式类型转换

    2021-01-05 10:46:59
    javascript隐式类型转换javascript隐式类型转换转换为string类型转换为number类型转化为boolean类型 javascript隐式类型转换 转换为string类型 隐式类型转换 转换为字符串string “+” 任何数据类型的数据和字符串...

    javascript隐式类型转换

    转换为string类型

    隐式类型转换 转换为字符串string
    “+” 任何数据类型的数据和字符串相加都是字符串

    <script>
            var str = "心";
            console.log(str + 123);//心123
            console.log(520 + str);//520心
            console.log(null + str);//null心
            console.log(undefined + str);//undefined心
            console.log(true + str);//true心
        </script>
    

    转换为number类型

    隐式类型转换 转换为number
    “+” 在变量的前面写上加号,可以实现转换类型为number

    		console.log(+"520");    //"520"==>520
            console.log(+"520abc"); //NaN
            console.log(+"abcde");  //NaN
            console.log(+null);     //0
            console.log(+true);     //1
            console.log(+undefined);//NaN
    

    -,/,%,+=,-=,/=,%=,>,<,>=,<=,==,!=

    		var num = 5
            console.log(123 - "3");     //120
            console.log(123 * "3");     //369
            console.log(num *= "3");    //15
            console.log(10 > "7");      //true
            console.log(10 == "10")     //true
    

    转化为boolean类型

    隐式类型转换 转换为boolean
    !

    <script>
            // 隐式类型转换     转换为boolean
            // !
            var num1 = 23;
            var num2 = 0;
            var str1 = "";
            var str2 = "123abc";
            var unde;
            var nu = null;
            console.log(!num1); //false
            console.log(!num2); //true
            console.log(!str1); //true
            console.log(!str2); //false
            console.log(!unde); //true
            console.log(!nu);   //true
        </script>
    
    展开全文
  • js隐式类型转换

    2019-08-01 15:52:03
    js隐式类型转换js中当程序运行到不是明显类型转换的表达式时,编译器会做隐式类型转换,而后再运算 隐式类型转换规则 1、转换成string类型:如果 "+" 运算符的一个操作符是字符串,它会将另一个操作符转换成...

     

    js隐式类型转换

    在js中当程序运行到不是明显类型转换的表达式时,编译器会做隐式的类型转换,而后再运算

    隐式类型转换规则

    1、转换成string类型:如果 "+" 运算符的一个操作符是字符串,它会将另一个操作符转换成字符串

    数值 + (string类型)、布尔型 + (string类型)、undifined + (string类型)、null + (string类型)会直接转换成string类型(String(x))再运算

    1 + "1"  //11
    //相当于
    String(1)+"1"
    
    true + "12"  // true12
    //相当于
    String(true)+"12"
    
    null+"12" //null12
    //相当于
    String(null)+"12"
    
    undefined+"12" //undefined12
    //相当于
    String(undefined)+"12"

    引用类型(Object,Array等) + (string类型):如果本身具有toString()方法则调用这个方法将其的原始值转换为字符串,如果没有toString()或者是toString()方法不返回一个原始值则调用valueOf()方法获取原始值并将其转换成字符串,如都没有则抛出类型错误异常

    [1,2]+"ab"  // 1,2ab
    //相当于
    [1,2].toString()+"ab"
    
    {}+"ab"  // [object Object]ab
    //相当于
    {}.toString()+"ab"
    
    new Date()+"ab" // Thu Aug 01 2019 10:59:16 GMT+0800 (中国标准时间)ab
    相当于
    new Date().toString()+"ab"
    
    [1,2]+[2,1] // 1,22,1
    // [1,2].toString()返回值是字符串,+变成连接字符
    相当于
    [1,2].toString()+[2,1].toString()

    2、转换成number类型:运算符(算术运算符:+ - * / 关系运算符:> >= < <= != ==)将其操作数转成数字

    1+undefined // NaN
    // 相当于
    1+Number(undefined)
    
    
    1+null // 1
    //相当于
    1+Number(null)
    
    2*"2" // 4
    // 相当于
    2*Number("2")
    
    2>'a' // false 
    //关系运算符的操作符有string类型时先转为对应字符的 Unicode 编码再转为数字
    //相当于
    2>'a'.charCodeAt() // 'a'.charCodeAt() => 97

    引用类型转数字时:如果具有valueOf()方法则返回其原始值,再转换成数字;否则,如具有toString()方法则返回其原始值再转为数字,再否则抛出类型错误异常

    []+2 // 2
    //相当于
    Number([].valueOf())+2
    
    []==0 // true
    // 相当于
    Number([].valueOf())==0)
    

    3、转为boolean类型:"!"运算符将其操作数转换成布尔值并取反

    !'a' // false => !Boolean('a')
    
    !null // true => !Boolean(null)
    
    !undefined // true => !Boolean(undefined)
    
    !0 // true => !Boolean(0)
    
    !"" // true => !Boolean("")
    
    !1 // false => !Boolean(1)

    类型转换:

    参考:

    JavaScript权威指南

    展开全文
  • JavaScript隐式类型转换

    2020-11-24 11:49:12
    之所以不同的数据类型之间可以做运算,是因为JavaScript引擎在运算之前会悄悄的把他们进行了隐式类型转换的,如下是数值类型和布尔类型的相加: 复制代码 代码如下: 3 + true; // 4 结果是一个数值型!如果是在C...
  • JavaScript 隐式类型转换 原文:https://blog.csdn.net/itcast_cn/article/details/82887895 · 1.1 隐式转换介绍 · 1.2 隐式转换规则 · 1.3 坑一:字符串连接符与算术运算符隐式转换规则混淆 · 1.4 坑二...

    JavaScript 隐式类型转换

    原文:https://blog.csdn.net/itcast_cn/article/details/82887895 

     

    · 1.1 隐式转换介绍

    · 1.2 隐式转换规则

    · 1.3 坑一:字符串连接符与算术运算符隐式转换规则混淆

    · 1.4 坑二:关系运算符:会把其他数据类型转换成number之后再比较关系

    · 1.5 坑三:复杂数据类型在隐式转换时会先转成String,然后再转成Number运算

    · 1.6-坑四:逻辑非隐式转换与关系运算符隐式转换搞混淆

     

    1.1-隐式转换介绍

    · 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算。

            o 这种无需程序员手动转换,而由编译器自动转换的方式就称为隐式转换

    · 例如1 > "0"这行代码在js中并不会报错,编译器在运算符时会先把右边的"0"转成数字0`然后在比较大小

     

    1.2-隐式转换规则

    1. 转成string类型: +(字符串连接符)

    2. 转成number类型:++/--(自增自减运算符) + - * / %(算术运算符) > < >= <= == != === !=== (关系运算符)

    3. 转成boolean类型:!(逻辑非运算符)

     

    1.3-坑一:字符串连接符与算术运算符隐式转换规则混淆

    · 常见面试题如下

    · 原理分析

     

    1.4-坑二:关系运算符:会把其他数据类型转换成number之后再比较关系

    常见面试题如下

    · 原理分析

     

    1.5-坑三:复杂数据类型在隐式转换时会先转成String,然后再转成Number运算

     

    · 原理分析

     

    1.6-坑四:逻辑非隐式转换与关系运算符隐式转换搞混淆

    · 前方高能,请注意~

    o 空数组的toString()方法会得到空字符串,而空对象的toString()方法会得到字符串`[object Object]` (注意第一个小写o,第二个大写O哟)

    · 常见面试题

     

    · 原理分析

     

     

     

    附:JavaScript 真值表

    在平常的习惯中,我们应该尽可能的使用 === 而不是 ==。同时,可以选择使用 typeof 或者 ts 来避免强制类型转换的错误。

     

    ============== End

     

    转载于:https://www.cnblogs.com/lsgxeva/p/10214939.html

    展开全文
  • js隐式类型转换的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。JavaScript的数据类型非常弱,在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一个字符串可以和数字相加。之...

    本篇文章给大家带来的内容是关于什么是隐式类型转换?js隐式类型转换的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    JavaScript的数据类型非常弱,在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一个字符串可以和数字相加。之所以不同的数据类型之间可以做运算,是因为JavaScript引擎在运算之前会悄悄的把他们进行了隐式类型转换的,如下是数值类型和布尔类型的相加:3 + true;

    // 结果:4

    结果是一个数值型!如果是在C或者Java环境的话,上面的运算会因为运算符两边的数据类型不一致而导致报错,但是,在JavaScript中,只有少数情况下,错误类型才会导致出错,比如调用非函数,或者读取null或者undefined的属性时,如下:"hello"(1);

    //结果: error: not a function

    null.x;

    // 结果:error: cannot read property 'x' of null

    多数情况下,JavaScript都不会出错的,而是自动的进行相应的类型转换。比如-, *, /,和%等算术运算符都会把操作数转换成数字的,但是“+”号就有点不一样了,有些情况下,它是算术加号,有些情况下,是字符串连接符号,具体的要看它的操作数,如下:2 + 3;

    //结果: 5

    "hello" + " world";

    // 结果:"hello world"

    但是,如果字符串和数字相加,JavaScript会自动把数字转换成字符的,不管数字在前还是字符串在前,如下:"2" + 3;

    // 结果:"23"

    2 + "3";

    //结果: "23"

    字符串和数字相加结果是字符串!

    需要注意的是,“+”的运算方向是从左到右的,如下:1 + 2 + "3";

    // "33"

    这与下面是等价的:(1 + 2) + "3";

    // "33"

    相比之下,下面的结果是不一样的:1 + "2" + 3;

    // "123"

    但是,隐式类型转换,有时候,会隐藏一些错误的,比如,null会转换成0,undefined会转换成NaN。需要注意的是,NaN和NaN是不相等的(这是由于浮点数的精度决定的),如下:var x = NaN;

    x === NaN; // false

    虽然,JavaScript提供了isNaN来检测某个值是否为NaN,但是,这是不太精确的,因为在调用isNaN函数之前,本身就存在了一个隐式转换的过程,它会把那些原本不是NaN的值转换成NaN的,如下:isNaN("foo"); // true

    isNaN(undefined); // true

    isNaN({}); // true

    isNaN({ valueOf: "foo" }); // true

    上面代码,我们使用isNaN来测试后,发现字符串,undefined,甚至对象,结果都返回真!!!但是他们不是NaN。

    总而言之:isNaN检测NaN并不可靠!!!

    有一种可靠的并且准确的方法可以检测NaN。

    我们都知道,只有NaN是自己不等自己的,可以使用不等于号(!==)来判断一个数是否等于自身,从而,可以检测到NaN了,如下:var a = NaN;

    a !== a; // true

    var b = "foo";

    b !== b; // false

    var c = undefined;

    c !== c; // false

    var d = {};

    d !== d; // false

    var e = { valueOf: "foo" };

    e !== e; // false

    我们也可以把这种模式定义成一个函数,如下:function isReallyNaN(x) {

    return x !== x;

    }

    对象的隐式转换

    对象是可以转换成原始值的,最常见的方法就是把它转换成字符串,如下:"the Math object: " + Math; // "the Math object: [object Math]"

    "the JSON object: " + JSON; // "the JSON object: [object JSON]"

    对象转换成字符串是调用了他的toSting函数的,你可以手动的调用它来检测一下:Math.toString(); // "[object Math]"

    JSON.toString(); // "[object JSON]"

    类似的,对象也是可以转换成数字的,他是通过value Of函数的,当然,你也可以自定义这个value Of函数,如下:"J" + { toString: function() { return "S"; } }; // "JS"

    2 * { valueOf: function() { return 3; } }; // 6

    如果,一个对象同时存在valueOf方法和toString方法,那么,value Of方法总是会被优先调用的,如下:var obj = {

    toString: function() {

    return "[object MyObject]";

    },

    valueOf: function() {

    return 17;

    }

    };

    "object: " + obj; // "object: 17"

    一般的,尽可能使value Of和toString表示的值相同(尽管类型可以不同)。

    最后一种强制类型转换,我们常常称之为“真值运算”,比如,if, ||, &&,他们的操作数不一定是布尔型的额。JavaScript会通过简单的转换规则,将一些非布尔类型的值转换成布尔型的。大多数的值都会转换成true,只有少数的是false,他们分别是:false, 0, -0, "", NaN, null, undefined,因为存在数字和字符串以及对象的值为false,所以,直接用真值转换来判断一个函数的参数是否传进来了,这是不不太安全的。比如,有一个可以具有默认值得可选参数的函数,如下:function point(x, y) {

    if (!x) {

    x = 320;

    }

    if (!y) {

    y = 240;

    }

    return { x: x, y: y };

    }

    这个函数会忽略任何的真值为假的参数的,包括0,-0;point(0, 0); // { x: 320, y: 240 }

    检测undefined的更加准确的方法是用typeof操作:function point(x, y) {

    if (typeof x === "undefined") {

    x = 320;

    }

    if (typeof y === "undefined") {

    y = 240;

    }

    return { x: x, y: y };

    }

    这种写法,可以区分开0和undefined的:point(); // { x: 320, y: 240 }

    point(0, 0); // { x: 0, y: 0 }

    另外一种方法是利用参数跟undefined作比较,如下:if (x === undefined) { ... }

    总结:

    1. 类型错误有可能会被类型转换所隐藏。

    2. “+”既可以表示字符串连接,又可以表示算术加,这取决于它的操作数,如果有一个为字符串的,那么,就是字符串连接了。

    3. 对象通过value Of方法,把自己转换成数字,通过toString方法,把自己转换成字符串。

    4.具有value Of方法的对象,应该定义一个相应的toString方法,用来返回相等的数字的字符串形式。

    5.检测一些未定义的变量时,应该使用type Of或者与undefined作比较,而不应该直接用真值运算。

    相关推荐:

    展开全文
  • javascript 隐式类型转换 javascript的数据类型包括: (1)基本数据类型:number、string (2) 布尔数据类型:boolean (3)对象:object object又包括Array,Date,Number,String,Boolean,Object,RegExp,...
  • Js隐式类型转换

    2020-09-13 11:52:31
    隐式类型转换 看完文章这道题你会了吗
  • 主要介绍了JavaScript隐式类型转换操作,结合实例形式分析了JavaScript隐式类型转换操作相关实现技巧与注意事项,需要的朋友可以参考下
  • 主要介绍了JavaScript隐式类型转换代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • js 隐式类型转换

    2019-10-06 05:12:37
    js是一门弱类型的语言,他在声明变量的时候不需要指定类型,对变量赋值也没有类型的检测,所以js是非常的灵活的,但是有时候也会出现一些非常匪夷所思的问题 隐式类型转换定义 console.log(1+'1') 看这句代码 一个...
  • JS隐式类型转换

    2019-07-16 13:00:13
    isNaN():判断参数是否为NaN,返回boolean值,隐式调用显示类型转换中的Number()再将调用的结果和NaN比对,返回true/false; isNaN('123s') // true 解析:Number('123s') === NaN -> NaN === NaN isNaN(null) // ...
  • 1. Javascript隐式类型转换与Java的区别 一个Javascript表达式中包含不同类型的值进行运算时,可能会发生隐式类型转换,也可能不转换,隐式类型转换规则与操作数,运算符都相关,这是与强类型语言(Java)不同的...
  • JavaScript隐式类型转换进阶 JavaScript中有许多的隐式类型转换,合理运用它们能对项目的开发提供更便捷的处理方式,目前涉及到隐式类型转换的的运算符主要有:数学运算符(加减乘除,取模,自增等)、if,alert语句...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,703
精华内容 14,281
关键字:

js隐式类型转换