Как проверить пустую / неопределенную / пустую строку в JavaScript?

Как проверить пустую / неопределенную / пустую строку в JavaScript?

Я провел некоторое исследование того, что произойдет, если вы передадите не строковое и непустое / нулевое значение в функцию тестера. Как многие знают, (0 == «») является истинным в javascript, но так как 0 является значением, а не пустым или нулевым, вы можете проверить его.

Следующие две функции возвращают true только для неопределенных, нулевых, пустых / пробельных значений и false для всего остального, такого как числа, логические значения, объекты, выражения и т. Д.

 function IsNullOrEmpty(value) { return (value == null || value === ""); } function IsNullOrWhiteSpace(value) { return (value == null || !/S/.test(value)); } 

Существуют более сложные примеры, но они просты и дают согласованные результаты. Нет необходимости проверять неопределенность, поскольку она включена в проверку (value == null). Вы также можете имитировать поведение C #, добавляя их в строку следующим образом:

 String.IsNullOrEmpty = function (value) { ... } 

Вы не хотите помещать его в прототип Strings, потому что, если экземпляр класса String имеет значение null, он выдаст ошибку:

 String.prototype.IsNullOrEmpty = function (value) { ... } var myvar = null; if (1 == 2) { myvar = "OK"; } // could be set myvar.IsNullOrEmpty(); // throws error 

Я проверил со следующим массивом значений. Вы можете пройтись по нему, чтобы проверить свои функции, если сомневаетесь.

 // Helper items var MyClass = function (b) { this.a = "Hello World!"; this.b = b; }; MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } }; var z; var arr = [ // 0: Explanation for printing, 1: actual value ['undefined', undefined], ['(var) z', z], ['null', null], ['empty', ''], ['space', ' '], ['tab', 't'], ['newline', 'n'], ['carriage return', 'r'], ['"\r\n"', 'rn'], ['"\n\r"', 'nr'], ['" \t \n "', ' t n '], ['" txt \t test \n"', ' txt t test n'], ['"txt"', "txt"], ['"undefined"', 'undefined'], ['"null"', 'null'], ['"0"', '0'], ['"1"', '1'], ['"1.5"', '1.5'], ['"1,5"', '1,5'], // valid number in some locales, not in js ['comma', ','], ['dot', '.'], ['".5"', '.5'], ['0', 0], ['0.0', 0.0], ['1', 1], ['1.5', 1.5], ['NaN', NaN], ['/S/', /S/], ['true', true], ['false', false], ['function, returns true', function () { return true; } ], ['function, returns false', function () { return false; } ], ['function, returns null', function () { return null; } ], ['function, returns string', function () { return "test"; } ], ['function, returns undefined', function () { } ], ['MyClass', MyClass], ['new MyClass', new MyClass()], ['empty object', {}], ['non-empty object', { a: "a", match: "bogus", test: "bogus"}], ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }], ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }] ]; 

§

Библиотека JavaScript подчеркивания http://underscorejs.org/ предоставляет очень полезную _.isEmpty() для проверки пустых строк и других пустых объектов.

Ссылка: http://underscorejs.org/#isEmpty

isEmpty _.isEmpty(object)
Возвращает true, если перечислимый объект не содержит значений (не перечислимых собственных свойств). Для строк и массивоподобных объектов _.isEmpty проверяет, имеет ли свойство length значение 0.

_.isEmpty([1, 2, 3]);
={amp}gt; ложь

_.isEmpty({});
={amp}gt; правда

Другие очень полезные функции подчеркивания включают в себя:
http://underscorejs.org/#isNull _.isNull(object)
http://underscorejs.org/#isUndefined _.isUndefined(value)
http://underscorejs.org/#has _.has(object, key)

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector