Передача NULL в качестве параметра для replace () в JavaScript ведет себя странно? - PullRequest
3 голосов
/ 16 июня 2010

У меня есть следующий jQuery:

        $("#textArea").keyup(function(){
            var textAreaValue = $("textArea");
            if(!textArea.value.indexOf("some string")){
                textArea.value = textArea.value.replace("some string",null);
                alert("It was there!");
            }
        });


  • Нормально ли для element.value.replace("some string",null); заменить "some string" на "null" в виде строки? А если нормально, можете ли вы объяснить, почему?

  • Я проверил это с element.value.replace("some string",""), и это прекрасно работает, так что будет разница между null и ""?

Использование FireFox 3.6.3, заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 16 июня 2010

Похоже, что null был приведен к типу String.

Попытка:

"a" + null // "anull"

Хотя вы не можете вызвать toString () для объекта null, похоже, что нулевой объект неявно преобразуется в строку, что дает строку "null".

String(null) // "null"
1 голос
/ 16 июня 2010

Второй параметр String.replace является обязательным параметром, и он должен быть строкой. См. MDC и w3schools . Это не нормально и не безопасно передавать null, который не является строкой. Не удивляйтесь, если ваш код не выполняется должным образом во всех движках JavaScript.

1 голос
/ 16 июня 2010

"" - пустая строка.

null - это то, что указывает на преднамеренное ненулевое значение или неопределенное значение.

null в основном используется для инициализации objects

и в str.replace (param1, param2) param1 и param2 должны быть string или что-то, что производит string (в param2) ... в том, что сказано,

var heart_type = 'images/unheart.png';
alert( heart_type.replace(".png",null));​

оповестит images/unheartnull .. потому что ноль был обработан как string ...

.replace() ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...