php isset() equivalent in javascript
I'm looking for the javascript equivalent of the php function isset(). I've tried the method described here at JavaScript isset() equivalent but at firebug, error comes up saying
data.del is undefined //Firebug warning/error
if(typeof data.del[0].node != 'undefined') { // codes in my js file
And in some cases
data is null 开发者_运维问答 //Firebug warning/error
if(typeof data.storyLine != 'undefined') { // codes in my js file
The logic seems to work but I'm wondering why is there an error then??
Basically, I want to check whether data.del[0].node or data.storyLine isset or not??
isset() makes two checks: first if the variable is defined, and second if it is null.
You will have to check for both the 'undefined' case and the null case, for example:
if (typeof data !== 'undefined' && data !== null)
ECMAScript defines the hasOwnProperty method for checking if an object has a property of a given name:
var foo = {'bar':'bar'}
alert( foo.hasOwnProperty( 'bar' ) ); //true
alert( foo.hasOwnProperty( 'baz' ) ); //false
EDIT: This doesn't fully answer your question
It's possible for a property to be set as undefined
foo.bar = undefined;
alert( foo.hasOwnProperty( 'bar' ) ); //still true
The important question is: What do you need your truth table to be?
In php:
type | isset() | == true
------+---------+----------
null | false | false
false | true | false
true | true | true
"" | true | false
"a" | true | true
0 | true | false
1 | true | true
In JS:
type | isset() | truthy
----------+---------+--------
NaN | ? | false
undefined | ? | false
null | false | false
true | true | true
false | true | false
"" | true | false
"a" | true | true
0 | true | false
1 | true | true
I think the best solution is to look in the source code of php.js:
function isset () {
// !No description available for isset. @php.js developers: Please update the function summary text file.
//
// version: 1103.1210
// discuss at: http://phpjs.org/functions/isset
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: FremyCompany
// + improved by: Onno Marsman
// + improved by: Rafał Kukawski
// * example 1: isset( undefined, true);
// * returns 1: false
// * example 2: isset( 'Kevin van Zonneveld' );
// * returns 2: true
var a = arguments,
l = a.length,
i = 0,
undef;
if (l === 0) {
throw new Error('Empty isset');
}
while (i !== l) {
if (a[i] === undef || a[i] === null) {
return false;
}
i++;
}
return true;
}
加载中,请稍侯......
精彩评论