При каких обстоятельствах необходимо выполнить явное приведение переменной к строке в JavaScript? - PullRequest
3 голосов
/ 12 февраля 2010

Существуют ли сценарии, в которых абсолютно необходимо выполнить явное приведение переменной в JavaScript к строке

В следующем примере это не обязательно:

var n=1;
var s = "Hello" + n;  
var s = "Hello"+String(n); //not necessary

Я использовал числовое значение выше, хотя это не обязательно относится только к цифрам.

Ответы [ 5 ]

5 голосов
/ 12 февраля 2010

Да, если вы хотите "11" вместо 2.

var n = 1;    
var s = n + n;

будет s === 2

2 голосов
/ 12 февраля 2010

Хорошо, если вы хотите отобразить два числа рядом ...

var a=5, b = 10;

alert( a+b ); // yields 15
alert( String(a) + String(b) ); //yields '510'

но я не знаю, захотите ли вы когда-нибудь сделать что-то подобное ..

1 голос
/ 12 февраля 2010

Обычно переменная преобразуется в строку, если вы хотите использовать строковые методы для этой переменной. Я думаю, что наиболее полезным является случай, когда вы должны использовать строковый метод внутри функции, и вы не знаете, какой тип переменной пользователь передает в функцию. Например, если вы хотите вычислить количество символов в переменной:

function length(s)
{
    return s.length;
}

С помощью этой функции вы можете работать только со строками, потому что если пользователь вставляет число в качестве аргумента, свойство length не определено, поскольку объект Number не имеет этого свойства, поэтому вы должны привести переменную:

function length(s)
{
     s=s+"";
     return s.length;
}

и на этот раз это работает.

1 голос
/ 12 февраля 2010

Это зависит от типа объекта, с которым вы работаете. Базовые объекты уже имеют полезный метод toString, который превращает их в строки. Но пользовательские объекты не делают. Они наследуют метод от Object.prototype.toString.

Поэтому, когда у вас есть пользовательский объект, который должен возвращать полезную строку при преобразовании в строку, определите метод toString:

function Human(name) {
    this.name = name.toString();
    this.toString = function() {
        return this.name;
    };
    return this;
}
var alice = new Human("Alice");
alert("Hi, I’m " + alice + ".");
1 голос
/ 12 февраля 2010

Я бы сказал, что в этой ситуации это необходимо:

var n = 20; 
var m = 10;
var s = String(n) + String(m); // "2010" String
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...