У меня есть следующий 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
Babiker 16 Июн 2010 в 08:07

3 ответа

Лучший ответ

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

Пытаться:

"a" + null // "anull"

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

String(null) // "null"
3
Anurag 16 Июн 2010 в 04:15

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

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() Справка

1
Reigel 16 Июн 2010 в 04:17

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

1
Eric Mickelsen 16 Июн 2010 в 04:14