Is there a difference between String(x) and ''

后端 未结 4 418
陌清茗
陌清茗 2021-01-22 20:44

Is there a difference? Will string 2 inherit different object prototypes?

var s1 = 1234 + \'\';
var s2 = String(1234);

//s1.someNewFunc();   error?
//s2.someNew         


        
相关标签:
4条回答
  • 2021-01-22 20:50

    Same thing!

    var s1 = 1234 + '';
    var s2 = String(1234);
    
    typeof s1   //string
    typeof s2   //string
    
    0 讨论(0)
  • 2021-01-22 20:52

    Javascript allows you to treat primitive values as though they were objects. It does so by doing an on-the-fly coercion of the primitive to an object. That's why, even though primitives have no properties, something like this is perfectly fine:

    "abcde".substr(1,3); //bcd
    true.valueOf(); //true
    
    0 讨论(0)
  • 2021-01-22 21:01
    var s1 = 1234 + '';
    

    Creates a string literal. This is a javascript language primitive.

    var s2 = String(1234);
    

    The String() function also returns a primitive string literal. s2 will have the same members as s1 because they are both the same type.

    However

    var s3 = new String("1234");
    

    Will create an object of type String rather than a primitive string literal. This does have different members and is of type object.

    0 讨论(0)
  • 2021-01-22 21:03

    Both will behave the same way.

    Also, there is a nice explanation about string primitives vs. objects here:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

    Distinction between string primitives and String objects

    [...] String literals (denoted by double or single quotes) and strings returned from String calls in a non-constructor context (i.e., without using the new keyword) are primitive strings. JavaScript automatically converts primitives to String objects, so that it's possible to use String object methods for primitive strings. [...]

    0 讨论(0)
提交回复
热议问题