使用函数`String()`和函数参数的目的是什么?

Łuk*_*zak 1 javascript

我正在读书'Singe Page Web Applications'.我遇到了以下示例:

// This is single pass encoder for html entities and handles
// an arbitrary number of characters
encodeHtml = function ( input_arg_str, exclude_amp) {
    var input_str = String( input_arg_str), regex, lookup_map;

    ...

    return input_str.replace(regex, function ( match, name ){
        return lookup_map[ match ] || '';
    });
};
Run Code Online (Sandbox Code Playgroud)

我想知道,使用String()带参数的函数的目的是什么input_arg_str.我知道通过使用String()函数我可以将不同的对象转换为字符串,但我从未遇到过使用这样的功能String().

我很好奇你对此的看法,并且非常感谢你的帮助.

And*_*ker 5

当然,@ Amit Joki的答案是正确的,但有几种方法可以将对象转换为字符串,为什么要使用String(...)

我猜这里的主要原因是它安全地处理了null,undefined.toString显然会失败.

String(undefined) // "undefined"
String(null) // "null"
Run Code Online (Sandbox Code Playgroud)

简而言之,将对象转换为字符串比使用它更具防御性.toString.以下是关于MDN的说明:

它可以String用作"更安全"的toString替代方案,因为虽然它通常仍然调用底层toString,但它也适用于null和undefined.

相信你用字符串连接得到相同的结果:

var input_str = '' + input_arg_str; // also handles `null` and `undefined`
Run Code Online (Sandbox Code Playgroud)