null と未定義の違いは何ですか?

null と未定義の違いは何ですか?


同点

1.nullとundefinedはどちらもjsの基本データ型
2.undefinedとnullはどちらも偽値(falsy)であり、判定の条件として使えるため、ほとんどの場合、両者の使い方に違いはありません

if(undefined){
    
    
  console.log('真的');
}else{
    
    
  console.log('假的');  //执行
}

if(null){
    
    
  console.log('真的');
}else{
    
    
  console.log('假的');  //执行
}

両者を比較すると

//松散比较(loose equality)
console.log(null == undefined); //true

//严格比较(strict equality)
console.log(null === undefined); //false

違い

未定義

undefined の意味は undefined です. 一般に undefined と宣言すると undefined が返されます. undefined は
JavaScript の予約語ではありません. undefined は変数名として使用できることを意味します. しかし, これは非常に危険です.不定値判定。void 0 などのいくつかのメソッドを使用して、安全な未定義の値を取得できます。

どのような状況で未定義に見えるか

//a并未定义过
console.log(typeof a);  //"undefined"
//注意,这里只能使用typeof,直接使用a会造成报错
console.log(a);  //Uncaught ReferenceError: a is not defined
//定义但未赋值
let a;
console.log(a);  //undefined
let a=undefined;
console.log(a); //undefined
//1-参数
function blueFn(a, b) {
    
    
    console.log(a, b);
}

blueFn(12);  //12, undefined——因为b没有传值,所以是undefined
const blue={
    
    age: 18, gender: 'male'};

console.log(blue.height); //undefined——因为就没有叫height的东西

簡単に言えば、およそ5つの状況があります

1. 本当に未定義 (typeof のみが利用可能)
2. 定義されているが割り当てられていない
3. 直接代入または未定義を返す
4. 関数にパラメータが割り当てられていない
5. 対応する属性がない

ヌル

Null は空のオブジェクトを表し、null は主に初期化としてオブジェクトを返す可能性のある変数に値を割り当てるために使用されます。
null はどうなるか

let name = null;
console.log(name);  //null
function fn1(a) {
    
    
    console.log(a);
}
fn1(null); //null
const person={
    
    name: 'blue', age: null};
console.log(person1.age); //null

要約する

Null は、積極的に使用する必要がある通常の値です. 積極的に使用する場合にのみ、null が表示されます. ステートメントがない場合、null はそれ自体ではポップアップしません. Undefined は特別な値であり、js の最後の選択肢です
. js に「存在しないもの」を要求すると、未定義になります (例: 割り当てられていない変数、返されない関数、渡されないパラメーター)

Null は本質的に 0 であり、undefined は本質的に特別なオブジェクトです.Null は Number 型で加算、減算、乗算、除算することができ、また比較することもできます

Number(null); //0
Number(undefined); //NaN

12+null; //12
12+undefined; //NaN


//跟数字比较会更加明显
-5<null; //true——null是0,-5<0

-5<undefined;  //false
-5>undefined;  //false
-5==undefined; //false
//undefined就不是数字,跟数字没有可比性

代入の破壊と未定義、null

const [a=1,b=2]=[undefined, null];

//undefined就是没给——触发默认值
console.log(a);  //1

//null是给了,但是空——不触发默认值
console.log(b);  //null

おすすめ

転載: blog.csdn.net/zhaojiaxing123/article/details/129249330