在JavaScript中,根据我的理解,以下内容都是相同的:
var carter2 = new String();
var carter2 = '';
var carter2 = "";
Run Code Online (Sandbox Code Playgroud)
哪一个最受欢迎?
不要用
var str = new String();
Run Code Online (Sandbox Code Playgroud)
因为
var str = new String("dog");
var str2 = new String("dog");
str == str2; // false
Run Code Online (Sandbox Code Playgroud)
但
var str = "dog";
var str2 = "dog";
str == str2; // true
Run Code Online (Sandbox Code Playgroud)
但是,由于类型强制,以下工作(感谢Rocket指出)
var str = new String("dog");
var str2 = "dog";
str == str2; // true
Run Code Online (Sandbox Code Playgroud)
单引号和双引号无关紧要,除了需要转义的引号.许多其他人已经注意到在创建HTML字符串时单引号更好,因为XHTML期望属性具有双引号,并且您不需要转义它们.
在执行操作时new String(),您不会返回string基元,而是返回String对象.
对于所有意图和目的,它就像一个string原始的,但有些情况下它不会.例如:
var a = new String('body');
jQuery(a); // This will *not* function as expected
// This will make a jQuery object containing a "String" object
// It will NOT treat it as a selector string
Run Code Online (Sandbox Code Playgroud)
同样在比较事物时,可能会有问题.在JavaScript中比较对象时,只有true它们是完全相同的对象,而不仅仅是相同的值.例:
var a = new String('test');
var b = new String('test');
var c = a;
var d = 'test';
a === b; // false, a and b are different objects (a == b is also false)
c === a; // true, a is the same object as c
c === b; // false, c (which is a) is a different object than b
d === a; // false, d is a primitive and a is an object, they are not equal
'test' === d; // true, they are both string primitives
d == a; // true, this uses "==" so only value is compared, not type
Run Code Online (Sandbox Code Playgroud)
您可以使用.valueOf()将String对象转换为string基元.
new String('test').valueOf() === 'test'; // true
Run Code Online (Sandbox Code Playgroud)
所以,我强烈建议使用var a = ''或var a = "".至于单引号与双引号,没有区别.考虑这个例子:
var a = "My name is Joe O'Ryan";
var b = 'My name is Joe O\'Ryan'; // need to escape the '
var c = 'Joe said: "Hi"';
var d = "Joe said \"HI\""; // need to escape the "
Run Code Online (Sandbox Code Playgroud)
因此,由您决定是否使用'或",但我建议那些结束new String().
| 归档时间: |
|
| 查看次数: |
25474 次 |
| 最近记录: |