JavaScript에 정의되지 않고 null
26430 단어 javascripttutorialwebdevbeginners
undefined
와 null
는 자바스크립트의 두 가지 데이터 유형으로 때로는 곤혹스러울 수도 있다.이 강좌는 당신이 그것들을 이해하는 데 도움을 줄 것입니다.그것은 자바스크립트의 undefined
와 null
가 무엇인지 설명할 것이다.이 두 가지 차이점과 그것을 어떻게 사용하는지 이해하게 될 것입니다.토대
undefined
와 null
는 모두 자바스크립트에 존재하는 원어data types이다.이러한 데이터 유형에는 부울 값, 숫자, 문자열, 기호, 널과 정의되지 않은 값이 포함됩니다.JavaScript의 다른 값은 객체입니다.undefined
와 null
의 또 다른 공통점은 모두 falsy값이라는 것이다.이것은 브리 상하문에서
undefined
을 사용할 때 false
로 간주된다는 것을 의미한다.부어 상하문은 부어 값true
또는 false
으로 계산된 상하문이다.볼 상하문의 한 예는 if...else 문장의 조건이다.이것도 역시 네가 느슨한 평등성을 시험하는 것을 피해야 하는 이유다.느슨한 평등성을 테스트할 때 type coercion 배경에서 발생한다.
undefined
와 null
는 모두 거짓이며 이것은 그들이 고려할 것이다.loose equality의 테스트 결과는 일치할 것이다.이 테스트의 결과는 true
이다.그러나 이것이 정말 옳은 것은 아니다.이 두 가지 데이터 유형은 다르다.만약 당신이 많은 문제를 피하고 싶다면, 느슨한 평등성을 시험하는 것을 피하세요.느슨한 평등성이 아니라 엄격한 평등성을 시험하다.테스트strict equality 시 JavaScript는 유형 강제를 수행하지 않습니다.엄격하게 검사하면 값을 비교할 뿐만 아니라 데이터 유형도 비교할 수 있다.
JavaScript의
undefined
와 null
는 서로 다른 데이터 유형입니다.이것은 엄격한 평등 테스트가 이 두 가지는 다르다는 것을 정확하게 알려줄 것이다.// Testing for loose equality:
console.log(null == undefined)
// Output:
// true
// Testing for strict equality:
console.log(null === undefined)
// Output:
// false
// Other examples of loose equality:
console.log(null == 0)
// Output:
// false
console.log(null == 0n)
// Output:
// false
console.log(null == null)
// Output:
// true
console.log(null == false)
// Output:
// false
console.log(null == NaN)
// Output:
// false
console.log(null == '')
// Output:
// false
// Other examples of strict equality:
console.log(null === 0)
// Output:
// false
console.log(null === 0n)
// Output:
// false
console.log(null === null)
// Output:
// true
console.log(null === undefined)
// Output:
// false
console.log(null === false)
// Output:
// false
console.log(null === NaN)
// Output:
// false
console.log(null === '')
// Output:
// false
정의되지 않음
변수를 설명하지만 값을 부여하지 않으면
undefined
변수가 됩니다.JavaScript가 자동으로 수행하는 작업 중 하나입니다.단, 필요하면 스스로 변수를 분배할 수도 있다undefined
.그럼에도 불구하고 JavaScript 개발자에게는 흔치 않습니다.// Declare variable without assigning it a value:
let car
// Log the value of "car":
console.log(car)
// Output:
// undefined
// Declare variable as undefined:
let house = undefined
// Log the value of "house":
console.log(house)
// Output:
// undefined
그리고 다른 경우 당신은 얻을 수 있다undefined
.이 장면들의 두 가지 예는 존재하지 않는 그룹 요소와 존재하지 않는 대상 속성이다.존재하지 않는 객체 등록 정보를 사용하려고 하면 JavaScript가 undefined로 돌아갑니다.존재하지 않는 그룹 요소도 마찬가지다.// Non-existing object properties and array elements:
const book = {
title: 'Zero to One',
author: ['Peter Thiel', 'Blake Masters'],
publicationDate: 'September 18, 2014'
}
// Try to access non-existing property:
console.log(book.genre)
// Output:
// undefined
// Try to access non-existing array element:
console.log(book.author[2])
// Output:
// undefined
// Or:
const myObj = {}
const arr = []
// Log the value of myObj.prop:
console.log(myObj.prop)
// Output:
// undefined
// Log the value of first element:
console.log(arr[0])
// Output:
// undefined
다른 경우, 함수가 어떤 내용도 현식으로 되돌아오지 않으면, 하나를 받게 된다. undefined
그런 다음 암시적으로 되돌아갑니다undefined
.함수에 return
문장이 하나 있지만 뒤에 아무런 문장이 없으면 같은 상황이 발생할 수 있다.그것은 또한 은밀하게 되돌아온다undefined
.// Create a function that doesn't return:
function myFunc() {}
// Call myFunc():
myFunc()
// Output:
// undefined
// Create a function that returns nothing:
function myFunc() {
return
}
// Call myFunc():
myFunc()
// Output:
// undefined
흥미로운 것은 undefined
JSON에서는 무효, null
JSON에서는 무효다.또 재미있는 일이 하나 있다.정의되지 않은 변수 유형을 가져오려고 하면 JavaScript가 "undefined"로 돌아갑니다.JavaScript에서 undefined의 데이터 형식은'undefined'라는 고유한 값입니다.// Trying to use undefined in JSON
console.log(JSON.stringify({ name: undefined, age: null }))
// Output:
// '{"age":null}'
// Getting the data type of undefined:
console.log(typeof undefined)
// Output:
// 'undefined'
정의되지 않은 및 기본 매개변수 값
Default parameter values는 ES6에 도입된 편리한 기능입니다.이 기능을 사용하면 기본값으로 매개변수를 선언할 수 있습니다.이 기능을 변수와 함수에 사용할 수 있습니다.기본값은 정의되지 않은 경우 기본적으로 사용됩니다.함수의 경우 매개변수가 정의되지 않은 경우 누락됩니다.
// Create function with default parameter value:
function myFunc(name = 'Unknown') {
return name
}
// Call myFunc without any argument (parameter being undefined):
myFunc()
// Output:
// Unknown
// Call myFunc with argument (parameter being defined):
myFunc('Jack')
// Output:
// 'Jack'
정의되지 않은 할당 값
Destructuring assignment는 ES6에 도입된 또 다른 기능으로 매우 빠르게 유행하게 되었다.이 기능을 사용하면 배열에서 값을 추출하고 객체에서 속성을 추출하여 변수에 값을 할당할 수 있습니다.이 모든 것은 코드 한 줄만 있으면 된다.해구의 유용한 특징은 기본값을 지원하는 것이다.
만약 네가 하나의 수조를 가지고 있다면.원하는 것은 이 그룹에서 항목을 추출하여 몇 개의 변수에 분배하는 것입니다.문제는 변수마다 충분한 값이 있는지 모른다는 것이다.네가 할 수 있는 일은 기본값을 사용하는 것이다.변수가 배열에서 일치하는 항목을 찾을 수 없으면 기본값을 사용합니다.
수조에서 받은 값이
undefined
이기 때문이다.이것은 JavaScript에 할당할 수 있는 것이 없고 기본값을 사용해야 한다는 것을 알려 줍니다.// Create an array:
const myArray = ['1 is one', '2 is two', '3 is three']
// Use destructuring assignment
// to assign values from myArray:
const [one, two, three, four = 'Four doesn\'t exist'] = myArray
// Get the value of one:
console.log(one)
// Output:
// '1 is one'
// Get the value of two:
console.log(two)
// Output:
// '2 is two'
// Get the value of three:
console.log(three)
// Output:
// '3 is three'
// Get the value of four:
// four will be undefined because the array
// contains only three items.
// This will trigger default value 'Four doesn\'t exist'.
console.log(four)
// Output:
// "Four doesn't exist"
빈값
null
JavaScript에서 만나기 어려울 수 있습니다.undefined
와는 달리 어떤 경우에는 자동으로 할당되지 않습니다.따라서 누군가가 지정해야 한다.많은 JavaScript 개발자들이 이를 임시 값으로 사용하는 것을 좋아하기 때문에 이런 일이 자주 발생한다.값이 비어 있거나 존재하지 않음을 나타냅니다.// Variable automatically assigned undefined:
let name
// Log the value of "name":
console.log(name)
// Output:
// undefined
// Variable explicitly assigned null:
let position = null
// Log the value of "position":
console.log(position)
// Output:
// null
당신은 undefined
자신의 유형인'Undefined'가 있다는 것을 기억합니까?자바스크립트null
에서도 흥미로운 일이 있었다.그것은 실제로는 물체다.이 객체에는 유효한 값이 있지만 속성이 없으며 변경할 수 없습니다.typeof 조작부호를 사용하여 이 점을 쉽게 테스트할 수 있습니다.typeof
연산자를 null
와 함께 사용하면'null'같은 결과를 얻지 못한다.반대로 당신은 대상을 얻게 될 것이다.이 작업은 처음부터 JavaScript로 수행됩니다.이는 JavaScript가 처음 구현한 오류로 간주됩니다.// Test type of null:
console.log(typeof null)
// Output:
// 'object'
console.log(typeof null === 'object')
// Output:
// true
null 및 기본 매개 변수 값
아시다시피 기본 매개 변수 값은 필요한 값이
undefined
인 경우 기본값을 선언할 수 있습니다.흥미로운 것은 이것이 null
적용되지 않는다는 것이다.함수를 만들고 기본 매개 변수 값을 사용한다고 가정하십시오.조금 늦게 이 함수를 호출해서 보내기 null
.이런 상황에서 무슨 일이 일어날지는 네가 바라는 것이 아니다.지정한 기본값을 얻을 수 없습니다.대신
null
다.기본 매개 변수를 사용하거나 사용하려면 이 점을 기억하십시오.그렇지 않으면, 너는 약간의 번거로움을 만날 수 있다.// Create function with default parameter value:
function myFunc(name = 'Unknown') {
return name
}
// Call myFunc with null as an argument:
myFunc(null)
// Output:
// null
null과 쓰레기 수집
자바스크립트에는 garbage collection라는 것이 있다.이것은 코드와 대상에게 분배된 메모리를 방출하는 과정이다.이 프로세스는 메모리에 사용되지 않은 기존 대상을 찾아서 삭제하는 역할을 합니다.JavaScript는 객체가 사용 중인지, 참조되는지 여부를 결정합니다.
객체가 더 이상 참조되지 않을 경우 JavaScript는 더 이상 필요하지 않다고 생각하고 삭제합니다.이것은 이 대상에 분배된 메모리를 방출할 것이다.이 과정은 백스테이지에서 자동적이고 주기적으로 발생한다.이는 JavaScript와 같은 고급 언어의 장점입니다.
객체를 만들 때마다 메모리를 할당할 필요는 없습니다.마찬가지로, 당신이 더 이상 어떤 대상을 필요로 하지 않을 때, 메모리를 방출할 필요도 없다.JavaScript는 이러한 메모리 관리를 제공합니다.그럼
null
은요?JavaScript에서 메모리를 자동으로 관리할 때 JavaScript의 일부 객체가 스팸으로 수집될 수 있음을 알 수 있습니다.한 가지 방법은 저장 대상의 변수를 분배하는 것이다
null
.객체에 대한 추가 참조가 없으면 JavaScript에서 해당 객체를 삭제합니다.이것은 즉각 발생하지 않을 것이다.이것은 다음 쓰레기 수집 주기에 발생할 것이다.// Create an object:
let myObj = { name: 'Stuart' }
// Assign the variable myObj to null
// to make { name: 'Stuart' } available for garbage collection:
myObj = null
// { name: 'Stuart' } can be garbage collected.
// Multiple references:
// First reference to { isAlive: true }:
let objOne = { isAlive: true }
// Second reference to { isAlive: true }:
let objTwo = objOne
// Remove all references to { isAlive: true }
// so the object can be garbage collected:
objOne = null
objTwo = null
// { isAlive: true } can be garbage collected.
JavaScript에서 정의되지 않고 비어 있는 간단한 검사
JavaScript에서 정의되지 않은 및 null을 확인하는 것은 간단할 수 있습니다.엄격한 상등성 검사와 정확한 데이터 형식으로 검사할 수 있다.
typeof
연산자도 사용할 수 있습니다.단, null
는 '대상' 이지 '빈' 이 아니라는 것을 기억해야 합니다.// Check if value is null:
const myVar = null
console.log(myVar === null)
// Output:
// true
// Check if value is undefined:
let myVar
console.log(myVar === undefined)
// Output:
// true
검사 null
의 또 다른 옵션은 typeof
연산자를 사용하고 값이falsy인지 확인하는 것입니다.null
는 거짓이고 빈 대상은truthy
이 될 것이다.// Check if value is null:
const myVar = null
console.log(typeof myVar === 'object' && !myVar)
// Output:
// true
결론: JavaScript에 정의되지 않고 비어 있음
undefined
와 null
는 두 가지 데이터 유형으로 초보자들이 곤혹스러울 때가 있다.특히 괴벽과 사람들이 예측할 수 없는 일들 덕분이다.나는 이 강좌가 당신이 undefined
와 null
가 자바스크립트에서 어떻게 일을 하고 그것을 어떻게 사용하는지 이해하는 데 도움을 줄 수 있기를 바랍니다.
Reference
이 문제에 관하여(JavaScript에 정의되지 않고 null), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alexdevero/undefined-and-null-in-javascript-explained-2kli텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)