추천 튜토리얼: "JavaScript 비디오 튜토리얼"
JavaScript에는 2가지 유형이 있습니다: 기본 유형(string
, booleans
number
, 기호
) 및 개체. string
, booleans
number
, symbol
)和对象。
对象是复杂的数据结构,JS 中最简单的对象是普通对象:一组键和关联值:
let myObject = { name: '前端小智' }
但是在某些情况下无法创建对象。 在这种情况下,JS 提供一个特殊值null
—表示缺少对象。
let myObject = null
在本文中,我们将了解到有关JavaScript中null的所有知识:它的含义,如何检测它,null
与undefined
之间的区别以及为什么使用null
造成代码维护困难。
1. null的概念
JS 规范说明了有关null
的信息:
值null
特指对象的值未设置,它是 JS 基本类型 之一,在布尔运算中被认为是falsy
。
例如,函数greetObject()
创建对象,但是在无法创建对象时也可以返回null
:
function greetObject(who) { if (!who) { return null; } return { message: `Hello, ${who}!` }; } greetObject('Eric'); // => { message: 'Hello, Eric!' } greetObject(); // => null
但是,在不带参数的情况下调用函数greetObject()
时,该函数返回null
。 返回null
是合理的,因为who
参数没有值。
2. 如何检查null
检查null
值的好方法是使用严格相等运算符:
const missingObject = null; const existingObject = { message: 'Hello!' }; missingObject === null; // => true existingObject === null; // => false
missingObject === null
的结果为true
,因为missingObject
变量包含一个null
值。
如果变量包含非空值(例如对象),则表达式existObject === nul
l的计算结果为false
。
2.1 null 是虚值
null
与false
、0
、''
、undefined
、NaN
都是虚值。如果在条件语句中遇到虚值,那么 JS 将把虚值强制为false
。
Boolean(null); // => false if (null) { console.log('null is truthy') } else { console.log('null is falsy') }
2.2 typeof null
typeof value
运算符确定值的类型。 例如,typeof 15是'number'
,typeof {prop:'Value'}
的计算结果是'object'
。
有趣的是,type null
的结果是什么
typeof null; // => 'object'
为什么是'object'
,typoef null
为object
是早期 JS 实现中的一个错误。
要使用typeof
运算符检测null
值。 如前所述,使用严格等于运算符myVar === null
。
如果我们想使用typeof
运算符检查变量是否是对象,还需要排除null
值:
function isObject(object) { return typeof object === 'object' && object !== null; } isObject({ prop: 'Value' }); // => true isObject(15); // => false isObject(null); // => false
3. null 的陷阱
null
经常会在我们认为该变量是对象的情况下意外出现。然后,如果从null
中提取属性,JS 会抛出一个错误。
再次使用greetObject()
函数,并尝试从返回的对象访问message
属性:
let who = ''; greetObject(who).message; // throws "TypeError: greetObject() is null"
因为who
变量是一个空字符串,所以该函数返回null
。 从null
访问message
属性时,将引发TypeError
错误。
可以通过使用带有空值合并的可选链接来处理null
:
let who = '' greetObject(who)?.message ?? 'Hello, Stranger!' // => 'Hello, Stranger!'
4. null 的替代方法
当无法构造对象时,我们通常的做法是返回null
,但是这种做法有缺点。在执行堆栈中出现null
时,刚必须进行检查。
尝试避免返回 null
的做法:
- 返回默认对象而不是
null
- 抛出错误而不是返回
null
回到开始返回greeting
对象的greetObject()
函数。缺少参数时,可以返回一个默认对象,而不是返回null
:
function greetObject(who) { if (!who) { who = 'Stranger'; } return { message: `Hello, ${who}!` }; } greetObject('Eric'); // => { message: 'Hello, Eric!' } greetObject(); // => { message: 'Hello, Stranger!' }
或者抛出一个错误:
function greetObject(who) { if (!who) { throw new Error('"who" argument is missing'); } return { message: `Hello, ${who}!` }; } greetObject('Eric'); // => { message: 'Hello, Eric!' } greetObject(); // => throws an error
这两种做法可以避免使用 null
。
5. null
vs undefined
undefined
是未初始化的变量或对象属性的值,undefined
是未初始化的变量或对象属性的值。
let myVariable; myVariable; // => undefined
null
和undefined
之间的主要区别是,null
表示丢失的对象,而undefined
表示未初始化的状态。
严格的相等运算符===
区分null
和undefined
:
null === undefined // => false
而双等运算符==
则认为null
和undefined
null == undefined // => true🎜그러나 어떤 경우에는 객체를 만들 수 없습니다. 이 경우 JS는 객체가 누락되었음을 나타내는 특수 값
null
을 제공합니다. 🎜function isEmpty(value) { return value == null; } isEmpty(42); // => false isEmpty({ prop: 'Value' }); // => false isEmpty(null); // => true isEmpty(undefined); // => true🎜이 글에서는 JavaScript의 null에 대한 모든 것을 배우게 됩니다: null의 의미, 감지 방법,
null
과 undefine
의 차이점, null
은 코드 유지 관리를 어렵게 만듭니다. 🎜🎜1. null의 개념🎜🎜JS 사양에서는 null
에 대한 정보를 설명합니다. 🎜 🎜예를 들어null
값은 값이 설정되지 않은 개체를 참조하며 JS의 기본 유형 중 하나이며 부울 연산에서falsy
로 간주됩니다.
greetObject()
함수는 객체를 생성하지만 객체를 생성할 수 없는 경우 null
을 반환할 수도 있습니다. 🎜rrreee🎜그러나 매개변수 greetObject()
함수가 호출되면 함수는 null
을 반환합니다. who
매개변수에 값이 없으므로 null
을 반환하는 것이 합리적입니다. 🎜🎜2. null을 확인하는 방법🎜🎜null
값을 확인하는 좋은 방법 엄격한 항등 연산자를 사용하는 것입니다: 🎜rrreee🎜missingObject === null
은 missingObject
변수에 가 포함되어 있으므로 <code>true
가 됩니다. null 값입니다. 🎜🎜변수에 null이 아닌 값(예: 객체)이 포함된 경우 existObject === nul
l 표현식은 false
로 평가됩니다. 🎜🎜2.1 null은 가상 값입니다🎜🎜null
및 false
, 0
, '', <code>undefine
및 NaN
은 모두 가상 값입니다. 조건문에서 false 값이 발견되면 JS는 false 값을 false
로 강제 설정합니다. 🎜rrreee🎜2.2 null 유형🎜🎜값 유형
연산자는 값 유형을 결정합니다. 예를 들어 typeof 15는 'number'
이고, typeof {prop: 'Value'}
의 계산 결과는 'object'
입니다. 🎜🎜흥미롭게도 type null
의 결과는 무엇입니까🎜rrreee🎜'object'
는 왜, typoef null
는 object
입니까? code>는 초기 JS 구현의 버그였습니다. 🎜🎜 typeof
연산자를 사용하여 null
값을 감지합니다. 앞에서 언급한 것처럼 엄격한 항등 연산자 myVar === null
을 사용하세요. 🎜🎜 typeof
연산자를 사용하여 변수가 객체인지 확인하려면 null
값도 제외해야 합니다. 🎜rrreee🎜3. null의 트랩🎜🎜null
은 변수가 객체라고 생각할 때 예기치 않게 나타나는 경우가 많습니다. 그런 다음 null
에서 속성을 추출하면 JS에서 오류가 발생합니다. 🎜🎜 greetObject()
함수를 다시 사용하고 반환된 개체에서 message
속성에 액세스해 보세요. 🎜rrreee🎜 who
변수는 다음과 같습니다. null 문자열이므로 함수는 null
을 반환합니다. null
에서 message
속성에 액세스하면 TypeError
오류가 발생합니다. 🎜🎜null 병합null
을 통한 선택적 연결을 사용하여 처리 가능:🎜rrreee🎜null 대체 🎜🎜객체를 생성할 수 없는 경우 일반적인 접근 방식은 null
을 반환하는 것이지만 이 접근 방식에는 단점이 있습니다. 실행 스택에 null
이 나타나면 검사를 수행해야 합니다. 🎜🎜null
반환을 방지하세요. 🎜-
null
대신 기본 개체를 반환합니다. - null
greeting
개체를 반환한 greetObject()
함수로 돌아갑니다. 매개변수가 누락된 경우 null
을 반환하는 대신 기본 개체를 반환할 수 있습니다. 🎜rrreee🎜 또는 오류 발생: 🎜rrreee🎜 이 두 가지 접근 방식을 사용하면 null
사용을 피할 수 있습니다. 🎜🎜5. null
및 정의되지 않음
span>🎜🎜undefine
은 초기화되지 않은 변수 또는 객체 속성의 값이고, undefine
은 초기화되지 않은 변수 또는 객체 속성의 값입니다. 🎜rrreee🎜 null
과 undefine
의 주요 차이점은 null
은 누락된 객체를 나타내고 undefine
은 초기화되지 않음을 나타낸다는 것입니다. 상태. 🎜🎜엄격 항등 연산자 ===
는 null
과 정의되지 않음
을 구별합니다.🎜rrreee🎜그리고 이중 항등 연산자 ==는 <code>null
과 undefine
을 동일한 것으로 간주합니다🎜null == undefined // => true
我使用双等相等运算符检查变量是否为null
或undefined
:
function isEmpty(value) { return value == null; } isEmpty(42); // => false isEmpty({ prop: 'Value' }); // => false isEmpty(null); // => true isEmpty(undefined); // => true
6. 总结
null
是JavaScript中的一个特殊值,表示丢失的对象,严格相等运算符确定变量是否为空:variable === null
。
typoef
运算符对于确定变量的类型(number
, string
, boolean
)很有用。 但是,如果为null
,则typeof会产生误导:typeof null
的值为'object'
。
null
和undefined
在某种程度上是等价的,但null
表示缺少对象,而undefined
未初始化状态。
更多编程相关知识,请访问:编程视频课程!!
위 내용은 JavaScript의 null 자세히 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

예, JavaScript의 엔진 코어는 C로 작성되었습니다. 1) C 언어는 효율적인 성능과 기본 제어를 제공하며, 이는 JavaScript 엔진 개발에 적합합니다. 2) V8 엔진을 예를 들어, 핵심은 C로 작성되며 C의 효율성 및 객체 지향적 특성을 결합하여 C로 작성됩니다.

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.

Python은 데이터 과학 및 자동화에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 데이터 처리 및 모델링을 위해 Numpy 및 Pandas와 같은 라이브러리를 사용하여 데이터 과학 및 기계 학습에서 잘 수행됩니다. 2. 파이썬은 간결하고 자동화 및 스크립팅이 효율적입니다. 3. JavaScript는 프론트 엔드 개발에 없어서는 안될 것이며 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축하는 데 사용됩니다. 4. JavaScript는 Node.js를 통해 백엔드 개발에 역할을하며 전체 스택 개발을 지원합니다.

C와 C는 주로 통역사와 JIT 컴파일러를 구현하는 데 사용되는 JavaScript 엔진에서 중요한 역할을합니다. 1) C는 JavaScript 소스 코드를 구문 분석하고 추상 구문 트리를 생성하는 데 사용됩니다. 2) C는 바이트 코드 생성 및 실행을 담당합니다. 3) C는 JIT 컴파일러를 구현하고 런타임에 핫스팟 코드를 최적화하고 컴파일하며 JavaScript의 실행 효율을 크게 향상시킵니다.

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
