문제

null 고려 된 object 자바 스크립트로?

확인 중입니다

if ( object == null )
      Do something

동일합니다

if ( !object )
      Do something

?

그리고 또한:

차이점은 무엇입니까? null 그리고 undefined?

도움이 되었습니까?

해결책

(name is undefined)

너: 무엇인가요 name? (*)
자바 스크립트 : name? 뭔가요 name? 당신이 무슨 말을하는지 모르겠습니다. 당신은 아무것도 언급하지 않았습니다 name 전에. (클라이언트) 측면에서 다른 스크립팅 언어를보고 있습니까?

name = null;

너: 무엇인가요 name?
자바 스크립트 : 모르겠어요.

요컨대; undefined 사물에 대한 개념이 존재하지 않는 곳입니다. 그것은 유형이 없으며, 그 범위에서 전에는 참조 된 적이 없습니다. null 사물이 존재하는 것으로 알려진 곳이지만 가치가 무엇인지 알 수 없습니다.

기억해야 할 한 가지는 그 것입니다 null 개념적으로는 동일하지 않습니다 false 또는 "" 또는 유형 캐스팅 후에도 동일하더라도

name = false;

너: 무엇인가요 name?
자바 스크립트 : 부울 거짓.

name = '';

너: 무엇인가요 name?
자바 스크립트 : 빈 문자열


*: name 이러한 맥락에서는 정의 된 적이없는 변수입니다. 정의되지 않은 변수 일 수 있지만 이름은 거의 모든 HTML 양식 요소의 속성입니다. 그것은 돌아가고 돌아가고 ID 전에 잘 설립되었습니다. ID는 독특해야하지만 이름은 필요하지 않기 때문에 유용합니다.

다른 팁

차이점은이 스 니펫으로 요약 될 수 있습니다.

alert(typeof(null));      // object
alert(typeof(undefined)); // undefined

alert(null !== undefined) //true
alert(null == undefined)  //true

확인 중

object == null 확인마다 다릅니다 if ( !object ).

후자는 동일합니다 ! Boolean(object), 단서 때문에 ! 작업자는 오른쪽 피연산자를 부울에 자동으로 캐스트합니다.

부터 Boolean(null) 그렇다면 거짓과 같습니다 !false === true.

그러니 당신의 대상이 있다면 null이 아닙니다, 하지만 거짓 또는 0 또는 "", 수표는 다음과 같이 통과됩니다.

alert(Boolean(null)) //false
alert(Boolean(0))    //false
alert(Boolean(""))   //false

null ~이다 대상이 아닙니다, 이것은 원시적 값. 예를 들어 속성을 추가 할 수 없습니다. 때때로 사람들은 그것이 대상이라고 잘못 가정합니다. typeof null 보고 "object". 그러나 그것은 실제로 버그입니다 (ECMAScript 6에서도 고정 될 수도 있음).

차이 null 그리고 undefined 다음과 같다:

  • undefined: JavaScript에서 사용하며“값 없음”을 의미합니다. 비 초기 변수, 누락 된 매개 변수 및 알 수없는 변수는 해당 값을 갖습니다.

    > var noValueYet;
    > console.log(noValueYet);
    undefined
    
    > function foo(x) { console.log(x) }
    > foo()
    undefined
    
    > var obj = {};
    > console.log(obj.unknownProperty)
    undefined
    

    그러나 알 수없는 변수에 액세스하면 예외가 발생합니다.

    > unknownVariable
    ReferenceError: unknownVariable is not defined
    
  • null: 프로그래머가 "값 없음"을 나타내는 데 사용됩니다. 예를 들어 함수의 매개 변수입니다.

변수 검사 :

console.log(typeof unknownVariable === "undefined"); // true

var foo;
console.log(typeof foo === "undefined"); // true
console.log(foo === undefined); // true

var bar = null;
console.log(bar === null); // true

일반적으로 자바 스크립트에서 항상 === never ==를 사용해야합니다 (== performs 모든 종류의 전환 예상치 못한 결과를 낳을 수 있습니다). 수표 x == null 두 가지 모두에 맞기 때문에 에지 케이스입니다. null 그리고 undefined:

> null == null
true
> undefined == null
true

변수에 값이 있는지 확인하는 일반적인 방법은 부울로 변환하고 그것이 true. 그 변환은 다음에 의해 수행됩니다 if 성명서와 부울 연산자! ("아니다").

function foo(param) {
    if (param) {
        // ...
    }
}
function foo(param) {
    if (! param) param = "abc";
}
function foo(param) {
    // || returns first operand that can't be converted to false
    param = param || "abc";
}

이 접근법의 단점 : 다음의 모든 값은 false, 당신은 조심해야합니다 (예 : 위의 점검은 구별 할 수 없습니다. undefined 그리고 0).

  • undefined, null
  • 부울 : false
  • 번호: +0, -0, NaN
  • 문자열 : ""

사용하여 부울로의 변환을 테스트 할 수 있습니다 Boolean 함수로서 (일반적으로 사용하는 생성자입니다. new):

> Boolean(null)
false
> Boolean("")
false
> Boolean(3-3)
false
> Boolean({})
true
> Boolean([])
true

null과 undefined의 차이점은 무엇입니까 ??

정의가없는 경우 속성은 정의되지 않습니다. NULL은 물체입니다. 그것의 유형은 객체입니다. NULL은 "값 없음. 정의되지 않은 것은 객체가 아니며 유형이 정의되지 않은 것을 의미하는 특별한 값입니다.

변수를 선언하고 NULL로 설정할 수 있으며 "NULL"이 인쇄 된 대 "정의되지 않은"을 제외하고 동작이 동일합니다. 정의되지 않은 변수를 NULL 또는 그 반대를 비교할 수도 있으며 조건은 참입니다.

 undefined == null
 null == undefined

인용하다 null과 undefined의 JavaScript 차이 자세한 내용은.

그리고 당신의 새로운 편집하다

if (object == null)  does mean the same  if(!object)

객체가 거짓인지 테스트 할 때는 둘 다 테스트 할 때만 조건을 충족합니다. 거짓, 그러나 사실이 아닙니다

여기에서 확인하십시오 : JavaScript Gotcha

질문의 첫 번째 부분 :

NULL이 JavaScript에서 객체로 간주되는 이유는 무엇입니까?

지금은 고칠 수없는 JavaScript 디자인 오류입니다. 객체를 입력하지 않거나 전혀 없어야합니다. 실제 객체를 감지 할 때 추가 점검이 필요하며 버그의 원인이 필요합니다.

질문의 두 번째 부분 :

확인 중입니다


if (object == null)
Do something

동일합니다

if (!object)
Do something

두 점검은 다음을 제외하고 항상 모두 거짓입니다.

  • 객체는 정의되지 않았거나 null입니다.

  • 물체는 원시적이고 0, "", 또는 거짓 : 먼저 false, 두 번째 true를 확인하십시오.

객체가 원시가 아니라 실제 물체 인 경우 new Number(0), new String(""), 또는 new Boolean(false), 두 점검은 모두 거짓입니다.

따라서 '개체'가 실제 객체를 의미하는 것으로 해석되면 두 점검은 항상 동일합니다. 프리미티브가 허용되면 검사는 0에 대해 다릅니다. "", 거짓.

같은 경우 object==null, 불분명 한 결과는 버그의 원천이 될 수 있습니다. 사용 == 권장하지 않습니다 === 대신에.

질문의 세 번째 부분 :

그리고 또한:

null과 undefined의 차이점은 무엇입니까?

JavaScript에서 한 가지 차이점은 NULL이 유형 객체이고 정의되지 않은 유형이 정의되지 않은 경우입니다.

JavaScript에서 null==undefined 사실이며 유형이 무시되면 동일하게 간주됩니다. 왜 그들이 결정했지만 0, "" 그리고 거짓은 같지 않습니다. 모르겠습니다. 임의의 의견 인 것 같습니다.

JavaScript에서 null===undefined 유형이 동일해야하므로 사실이 아닙니다. ===.

실제로는 널과 정의되지 않은 것이 동일합니다. 둘 다 존재하지 않기 때문입니다. 0과 "" 그 문제에 대해서도 빈 컨테이너 [] 그리고 {}. 너무 많은 유형의 동일한 것은 버그를위한 레시피입니다. 한 가지 유형이든 전혀 더 좋습니다. 가능한 한 적은 적은 사용을 시도 할 것입니다.

'거짓', '참'및 '!' 예를 들어 단순화 할 수있는 또 다른 벌레 가방입니다. if(!x) 그리고 if(x) 혼자서 충분하고, 당신은 참와 거짓이 필요하지 않습니다.

선언 된 var x 값이 주어지지 않으면 정의되지 않지만 x가 전혀 선언되지 않은 것과 동일해야합니다. 또 다른 버그 소스는 빈 컨테이너가 비어 있습니다. 따라서 함께 선언하고 정의하는 것이 가장 좋습니다. var x=1.

사람들은이 다양한 유형의 모든 것을 알아 내려고 노력하는 서클에서 둥글고 둥글게 가고 있지만 복잡한 다른 옷에서 모두 같은 것입니다. 현실은

undefined===undeclared===null===0===""===[]==={}===nothing

그리고 아마도 모든 것이 예외를 던져야 할 것입니다.

var x = null;

x는 null로 정의됩니다

Y는 정의되지 않습니다. // 내가 정의하지 않았기 때문에

if (!x)

NULL은 False로 평가됩니다

널과 정의되지 않은 것을 이해하는 한 가지 방법은 각각이 어디에서 발생하는지 이해하는 것입니다.

다음 상황에서 널 반환 값을 기대하십시오.

  • DOM을 쿼리하는 방법

    console.log(window.document.getElementById("nonExistentElement"));
    //Prints: null
    
  • ajax 요청에서 접수 된 JSON 응답


    {
      name: "Bob",
      address: null
    }
  • regex.exec.

  • 플럭스 상태에있는 새로운 기능. 다음은 null을 반환합니다.


        var proto = Object.getPrototypeOf(Object.getPrototypeOf({}));

       // But this returns undefined:

        Object.getOwnPropertyDescriptor({}, "a");

존재하지 않는 다른 모든 사례는 정의되지 않은 것으로 표시됩니다 (@AXEL에 의해 언급). 다음 각각의 인쇄는 "정의되지 않은"인쇄 :

    var uninitalised;
    console.log(uninitalised);

    var obj = {};
    console.log(obj.nonExistent);

    function missingParam(missing){
        console.log(missing);
    }

    missingParam();

    var arr = [];
    console.log(arr.pop());        

물론 var initialised = null을 작성하기로 결정한 경우; 또는 메소드에서 Null을 반환하면 다른 상황에서는 Null이 발생합니다. 그러나 그것은 꽤 분명해야합니다.

세 번째 사례는 변수에 액세스하고 싶지만 그것이 선언되었는지조차 모릅니다. 이 경우 참조 오류를 피하려면 유형을 사용합니다.

if(typeof unknown !== "undefined"){
    //use unknown
}

요약에서 DOM을 조작하거나 AJAX를 처리하거나 특정 ECMAScript 5 기능을 사용하는 경우 NULL을 확인하십시오. 다른 모든 경우의 경우 엄격한 평등으로 정의되지 않은지 확인하는 것이 안전합니다.

if(value === undefined){
  // stuff
}

JavaScript의 여러 가지 널 검사 비교 :

http://jsfiddle.net/aaronhoffman/ddrhb/5/

// Variables to test
var myNull = null;
var myObject = {};
var myStringEmpty = "";
var myStringWhiteSpace = " ";
var myStringHello = "hello";
var myIntZero = 0;
var myIntOne = 1;
var myBoolTrue = true;
var myBoolFalse = false;
var myUndefined;

...trim...

http://aaron-hoffman.blogspot.com/2013/04/javaScript-null-checking-undefined-and.html

JavaScript Null Check Comparison Chart

Null과 Undefined는 모두 가치 평등에 대해 False입니다 (null == 정의되지 않은) : 둘 다 부울 거짓으로 무너집니다. 그것들은 같은 객체가 아닙니다 (null! == 정의되지 않은).

undefined는 글로벌 객체 (브라우저에서 "창")의 속성이지만 객체 자체가 아니라 원시 유형입니다. 비 초기 변수 및 반환 명령문없이 끝나는 함수의 기본값입니다.

NULL은 객체의 인스턴스입니다. NULL은 수집 객체를 반환하여 빈 결과를 나타내는 DOM 메소드에 사용되며, 이는 오류를 나타내지 않고 잘못된 값을 제공합니다.

일부 정밀도 :

널과 정의되지 않은 ~이다 두 가지 다른 값. 하나는 이름에 대한 값이없는 것을 나타내고 다른 하나는 이름이없는 것을 나타냅니다.


an에서 무슨 일이 일어나는지 if 다음과 같이 간다 if( o ):

괄호 O의 표현은 평가 된 다음 if 괄호 안에서 표현식의 값을 유형으로 향한 차기 - 우리의 경우 o.

JavaScript에서 거짓 (거짓으로 강요 될) 값은 다음과 같습니다. '', null, undefined, 0 및 false.

답변에 추가합니다 간의 차이는 무엇입니까? undefined 그리고 null, JavaScript Definitive Guide에서 이 페이지에서:

당신은 고려할 수 있습니다 undefined 시스템 수준, 예상치 못한 또는 오류와 같은 가치의 부재를 나타내려면 null 프로그램 수준, 정상 또는 예상 가치 부재를 나타냅니다. 이 값 중 하나를 변수 또는 속성에 할당하거나 이러한 값 중 하나를 함수로 전달 해야하는 경우 null 거의 항상 올바른 선택입니다.

다음 함수는 그 차이를 해결할 수있는 이유를 보여줍니다.

function test() {
        var myObj = {};
        console.log(myObj.myProperty);
        myObj.myProperty = null;
        console.log(myObj.myProperty);
}

전화하면

test();

당신은 얻고 있습니다

한정되지 않은

없는

첫번째 console.log(...) 얻으려고합니다 myProperty ~에서 myObj 아직 정의되지 않았지만 "정의되지 않은"으로 돌아갑니다. NULL을 할당 한 후 두 번째 console.log(...) 왜냐하면 "null"로 반환합니다 myProperty 존재하지만 가치가 있습니다 null 그것에 할당되었습니다.

이 차이를 쿼리하기 위해 JavaScript는 null 그리고 undefined: 하는 동안 null - 다른 언어에서는 물체와 마찬가지로 undefined 인스턴스가 없기 때문에 객체가 될 수 없습니다 (조차도 null 인스턴스) 사용 가능.

null 대상입니다. 그것의 유형은 null입니다. undefined 대상이 아닙니다. 유형은 정의되지 않았습니다.

예를 들어 window.someWeirdProperty 정의되지 않았습니다

"window.someWeirdProperty === null" 거짓으로 평가합니다

"window.someWeirdProperty === undefined" True로 평가합니다.

또한 Checkif if (!o) 확인과 다릅니다 if (o == null) ~을 위한 o 존재 false.

NULL에 대한 또 다른 재미있는 것은 정의되지 않은 것에 비해 증가 할 수 있다는 것입니다.

x = undefined
x++
y = null
y++
console.log(x) // NaN
console.log(y) // 0

카운터의 기본 숫자 값을 설정하는 데 유용합니다. 선언에서 변수를 -1로 몇 번 설정 했습니까?

In Javascript null is not an object type it is a primitave type.

What is the difference? Undefined refers to a pointer that has not been set. Null refers to the null pointer for example something has manually set a variable to be of type null

Look at this:

   <script>
function f(a){
  alert(typeof(a));
  if (a==null) alert('null');
  a?alert(true):alert(false);
}
</script>
                                          //return:
<button onclick="f()">nothing</button>    //undefined    null    false
<button onclick="f(null)">null</button>   //object       null    false
<button onclick="f('')">empty</button>    //string               false
<button onclick="f(0)">zero</button>      //number               false
<button onclick="f(1)">int</button>       //number               true
<button onclick="f('x')">str</button>     //string               true

From "The Principles of Object-Oriented Javascript" by Nicholas C. Zakas

But why an object when the type is null? (In fact, this has been acknowledged as an error by TC39, the committee that designs and maintains JavaScript. You could reason that null is an empty object pointer, making "object" a logical return value, but that’s still confusing.)

Zakas, Nicholas C. (2014-02-07). The Principles of Object-Oriented JavaScript (Kindle Locations 226-227). No Starch Press. Kindle Edition.

That said:

var game = null; //typeof(game) is "object"

game.score = 100;//null is not an object, what the heck!?
game instanceof Object; //false, so it's not an instance but it's type is object
//let's make this primitive variable an object;
game = {}; 
typeof(game);//it is an object
game instanceof Object; //true, yay!!!
game.score = 100;

Undefined case:

var score; //at this point 'score' is undefined
typeof(score); //'undefined'
var score.player = "felix"; //'undefined' is not an object
score instanceof Object; //false, oh I already knew that.

The best way to think about 'null' is to recall how the similar concept is used in databases, where it indicates that a field contains "no value at all."

  • Yes, the item's value is known; it is 'defined.' It has been initialized.
  • The item's value is: "there is no value."

This is a very useful technique for writing programs that are more-easily debugged. An 'undefined' variable might be the result of a bug ... (how would you know?) ... but if the variable contains the value 'null,' you know that "someone, somewhere in this program, set it to 'null.'" Therefore, I suggest that, when you need to get rid of the value of a variable, don't "delete" ... set it to 'null.' The old value will be orphaned and soon will be garbage-collected; the new value is, "there is no value (now)." In both cases, the variable's state is certain: "it obviously, deliberately, got that way."

  1. Undefined means a variable has been declared but it has not been assigned any value while Null can be assigned to a variable representing "no value".(Null is an assignment operator)

2.Undefined is a type itself while Null is an object.

3.Javascript can itself initialize any unassigned variable to undefined but it can never set value of a variable to null. This has to be done programatically.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top