Maison interface Web js tutoriel Un examen plus approfondi de null en JavaScript

Un examen plus approfondi de null en JavaScript

Nov 10, 2020 pm 05:45 PM
javascript null

Un examen plus approfondi de null en JavaScript

Tutoriel recommandé : "Tutoriel vidéo JavaScript"

JavaScript a 2 types : les types de base (string, booleans number , symbol) et des objets.

Les objets sont des structures de données complexes, les objets les plus simples en JS sont des objets ordinaires : un ensemble de clés et de valeurs associées :

let myObject = {
  name: '前端小智'
}
Copier après la connexion

Mais dans certains cas, les objets ne peuvent pas être créés. Dans ce cas, JS fournit une valeur spéciale null — indiquant que l'objet est manquant.

let myObject = null
Copier après la connexion

Dans cet article, nous allons tout apprendre sur null en JavaScript : ce que cela signifie, comment le détecter, la différence entre null et undefined et pourquoi l'utilisation de null nuit à votre code Difficile de maintenir.

1. Le concept de null

La spécification JS explique des informations sur null :

valeurnull La valeur de l'objet spécifié n'est pas définie. C'est l'un des types de base de JS et est considéré comme falsy dans les opérations booléennes.

Par exemple, la fonction greetObject() crée un objet, mais peut également renvoyer 回null lorsqu'elle ne peut pas créer d'objet :

function greetObject(who) {
  if (!who) {
    return null;
  }
  return { message: `Hello, ${who}!` };
}

greetObject('Eric'); // => { message: 'Hello, Eric!' }
greetObject();       // => null
Copier après la connexion

Cependant, lorsque la fonction greetObject() est appelée sans arguments, la fonction renvoie null. Renvoyer null est raisonnable car le paramètre who n'a aucune valeur.

2. Comment vérifier null

Un bon moyen de vérifier une valeur null est d'utiliser l'opérateur d'égalité stricte :

const missingObject = null;
const existingObject = { message: 'Hello!' };

missingObject  === null; // => true
existingObject === null; // => false
Copier après la connexion

Le résultat de missingObject === null est true car la variable missingObject contient une valeur null.

Si la variable contient une valeur non nulle (comme un objet), l'expression existObject === null est évaluée à false.

2.1 null est une valeur imaginaire

null et false, 0, '', undefined et NaN sont. toutes les valeurs imaginaires. Si une valeur imaginaire est rencontrée dans une instruction conditionnelle, JS forcera la valeur imaginaire à false. L'opérateur

Boolean(null); // => false

if (null) {
  console.log('null is truthy')
} else {
  console.log('null is falsy')
}
Copier après la connexion

2.2 typeof null

typeof value détermine le type de valeur. Par exemple, le type de 15 est 'number' et le résultat de typeof {prop:'Value'} est 'object'.

Intéressant, quel est le résultat de type null

typeof null; // => 'object'
Copier après la connexion

Pourquoi 'object', typoef null est object est un bug dans les premières implémentations de JS.

Pour détecter la valeur typeof, utilisez l'opérateur null. Comme mentionné précédemment, utilisez l'opérateur égal strict myVar === null.

Si nous voulons utiliser l'opérateur typeof pour vérifier si une variable est un objet, nous devons également exclure la valeur null :

function isObject(object) {
  return typeof object === 'object' && object !== null;
}

isObject({ prop: 'Value' }); // => true
isObject(15);                // => false
isObject(null);              // => false
Copier après la connexion

3 . Le piège de null

null apparaît souvent de manière inattendue lorsque l'on pense que la variable est un objet. Ensuite, si vous extrayez l'attribut de null, JS générera une erreur.

Utilisez à nouveau la fonction greetObject() et essayez d'accéder à la propriété message à partir de l'objet renvoyé :

let who = '';

greetObject(who).message; 
// throws "TypeError: greetObject() is null"
Copier après la connexion

Comme la variable who est une chaîne vide, la fonction renvoie null . Lors de l'accès à une propriété null à partir de message, une erreur TypeError sera générée.

peut être géré en utilisant un chaînage facultatif avec une fusion nulle null:

let who = ''

greetObject(who)?.message ?? 'Hello, Stranger!'
// => 'Hello, Stranger!'
Copier après la connexion

4 Alternatives à null

. Lorsque l'objet ne peut pas être construit, notre approche habituelle consiste à revenir null, mais cette approche présente des inconvénients. Une vérification doit être effectuée lorsque null apparaît dans la pile d'exécution.

Essayez d'éviter de renvoyer null :

  • Renvoyer l'objet par défaut au lieu de null
  • Lance une erreur au lieu de renvoyer null

renvoie à la fonction greeting qui a initialement renvoyé l'objet greetObject(). Lorsque des paramètres sont manquants, au lieu de renvoyer null :

function greetObject(who) {
  if (!who) {
    who = 'Stranger';
  }
  return { message: `Hello, ${who}!` };
}

greetObject('Eric'); // => { message: 'Hello, Eric!' }
greetObject();       // => { message: 'Hello, Stranger!' }
Copier après la connexion

ou de générer une erreur :

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
Copier après la connexion

, vous pouvez éviter d'utiliser null.

5. null vs undefined

undefined est une variable ou une propriété d'objet non initialisée. la valeur de undefined est la valeur d'une variable ou d'une propriété d'objet non initialisée.

let myVariable;

myVariable; // => undefined
Copier après la connexion

La principale différence entre null et undefined est que null représente un objet perdu tandis que undefined représente un état non initialisé.

L'opérateur d'égalité stricte符=== fait la différence entre null et undefined :

null === undefined // => false
Copier après la connexion

tandis que l'opérateur d'égalité == considère null et undefined comme égaux

null == undefined // => true
Copier après la connexion

我使用双等相等运算符检查变量是否为nullundefined:

function isEmpty(value) {
  return value == null;
}

isEmpty(42);                // => false
isEmpty({ prop: 'Value' }); // => false
isEmpty(null);              // => true
isEmpty(undefined);         // => true
Copier après la connexion

6. 总结

null是JavaScript中的一个特殊值,表示丢失的对象,严格相等运算符确定变量是否为空:variable === null

typoef运算符对于确定变量的类型(number, string, boolean)很有用。 但是,如果为null,则typeof会产生误导:typeof null的值为'object'

nullundefined在某种程度上是等价的,但null表示缺少对象,而undefined未初始化状态。

更多编程相关知识,请访问:编程视频课程!!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 pm 02:54 PM

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Dec 17, 2023 pm 12:09 PM

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 am 09:39 AM

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Comment utiliser insertBefore en javascript Comment utiliser insertBefore en javascript Nov 24, 2023 am 11:56 AM

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).

JavaScript et WebSocket : créer un système de traitement d'images en temps réel efficace JavaScript et WebSocket : créer un système de traitement d'images en temps réel efficace Dec 17, 2023 am 08:41 AM

JavaScript est un langage de programmation largement utilisé dans le développement Web, tandis que WebSocket est un protocole réseau utilisé pour la communication en temps réel. En combinant les puissantes fonctions des deux, nous pouvons créer un système efficace de traitement d’images en temps réel. Cet article présentera comment implémenter ce système à l'aide de JavaScript et WebSocket, et fournira des exemples de code spécifiques. Tout d’abord, nous devons clarifier les exigences et les objectifs du système de traitement d’images en temps réel. Supposons que nous disposions d'un appareil photo capable de collecter des données d'image en temps réel.

See all articles