Typescript / Javascript-使用新的String()和s =''声明变量

时间:2019-12-31 02:27:27

标签: javascript typescript

如何声明一个字符数组或一个字符串?不确定字符数组和字符串之间是否也有区别。

let operators = new String();

let operators = '';

2 个答案:

答案 0 :(得分:0)

对我来说,我通常会做let operators = '';来声明和初始化string变量。

答案 1 :(得分:0)

javascript中没有字符数组,而打字稿中也没有字符数组(这是javascript的超集)。

''String对象。这就是文字形式。

['a', 'b', 's']是String对象的数组。

因此只需使用'';

现在''和,String之间有什么区别。第一个是原始,第二个是对象。但是,无论与第一个JavaScript一样,它们都会自动包装它并为其构造一个String对象。这样我们就可以使用字符串对象的所有方法了! 除了与eval()一起使用时。 原始被视为代码源。并且 String对象被视为字符串。 而且,图元仍将与对象区分开。但是在功能上它们是相同的。

以下显示了与console.log()的区别

enter image description here

从一般的编程角度来看!他们是一样的!区别根本没有关系。在少数情况下!就像eval或console.log一样。引擎的默认处理方式可能不同。但是,无论遇到什么情况,无论遇到什么情况,您都会再次重申。现在一切都清楚了。文档显示了更多,更好的阅读下面的报价。

最好在此处查看文档引用链接:

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

报价:

  

请注意,JavaScript区分String对象和   原始字符串值。 (布尔值和数字也是如此。)

     

字符串文字(用双引号或单引号引起来)和字符串   在非构造函数上下文中从String调用返回的值(即,   不使用new关键字调用)是原始字符串。   JavaScript自动将原语转换为String对象,因此   可以将String对象方法用于原始字符串。   在要在原始字符串或字符串上调用方法的上下文中   属性查询发生时,JavaScript会自动包装字符串   原语并调用该方法或执行属性查找。

let s_prim = 'foo'
let s_obj = new String(s_prim)

console.log(typeof s_prim) // Logs "string"
console.log(typeof s_obj)  // Logs "object"
  

字符串基元和字符串对象在以下情况下也会产生不同的结果   使用eval()。传递给eval的基元被视为源代码;   字符串对象与其他所有对象一样,通过返回   宾语。例如:

let s1 = '2 + 2'              // creates a string primitive
let s2 = new String('2 + 2')  // creates a String object
console.log(eval(s1))         // returns the number 4
console.log(eval(s2))         // returns the string "2 + 2"
  

由于这些原因,代码在遇到字符串时可能会中断   对象,当它需要原始字符串时,尽管   通常,作者不必担心区别。

     

始终可以将String对象转换为其原始副本   使用valueOf()方法。

console.log(eval(s2.valueOf()))  // returns the number 4