字符串函数valueOf()在JS字符串库中是无用的吗?

时间:2018-01-31 06:58:22

标签: javascript html string

当我可以在没有它的情况下得到结果时,valueOf()字符串函数有什么用?

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head>
<body>

<button>Click Me</button>

<script>
var a = "Good Morning!"; 
$('button').click(function(){
alert(a);
var x = a.valueOf();
alert(x);
});
</script> 
</body>
</html>

在上面的例子中,我可以非常简单地通过警告它自己来输出变量值。那么,在JS的字符串库中使用valueOf()函数有什么用呢?它没用吗?

3 个答案:

答案 0 :(得分:2)

valueOf函数为您提供了所使用的String的基础内容。正如我在下面引用的那样,Javascript在内部调用它,并从String对象中提供它的内容。因此,当它是String时,调用它是没有意义的。但对于其他对象来说,它是有道理的。

  

JavaScript调用valueOf方法将对象转换为原始值。您很少需要自己调用valueOf方法;当遇到期望原始值的对象时,JavaScript会自动调用它。

来自docs of String

  

String的valueOf()方法将String对象的原始值作为字符串数据类型返回。该值等同于String.prototype.toString()。

此方法通常由JavaScript在内部调用,而不是在代码中明确调用。

答案 1 :(得分:1)

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

var a = "Good Morning!";是字符串文字表示法。

但是如果你要将其定义为var a = new String('Good Morning!'); 获得字符串合理输出的唯一方法是使用a.valueOf();a.toString();

答案 2 :(得分:1)

当您通过String构造函数创建字符串时,

valueOf()非常有用。

let a = new String('Abcd');
// a is String object
// a.valueOf() is 'Abcd'

这里将包含整个String对象并获取必须调用a.valueOf()的字符串;

但如果你写

let b = 'Abcd';

valueOf()没有用。希望能回答你的问题。