undefined,null 和 undeclared 有什么区别?

undefined(未定义)

概念:是JS中的一个特殊值,表示一个未被赋值的变量或者一个不存在的属性。转为数值时为NaN. NaN表示某个数值无法被正确的表示或计算。
用法:
1、表示变量已经声明但尚未被赋值。当我们声明一个变量但没有给它赋值时,该变量的默认值就是undefined。

let a;
console.log(a); // 输出undefined

2、表示函数没有返回值。当我们定义一个函数返回任何值时,默认返回值为undefined。

function foo() {
  // 没有明确的return语句
}

let result = foo();
console.log(result); // 输出undefined

3、表示对象属性不存在。当我们访问一个对象的属性,但该属性不存在时,返回值为undefined。

let obj = { name: "John", age: 25 };

console.log(obj.name); // 输出 "John"
console.log(obj.address); // 输出 undefined

4、表示函数参数未传递。当我们调用一个函数但没有传递某个参数时,该参数的值为undefined。

function greet(name) {
  console.log("Hello, " + name);
}

greet("John"); // 输出 "Hello, John"
greet(); // 输出 "Hello, undefined"

null(空值)

概念:是JavaScript的原始值,表示一个空值或者一个不存在的对象,需将变量赋值为null,它表示变量没有任何有效的对象、数组、函数或值。转为数值时为0。
用法:
1、表示一个变量或对象的值为空。当我们想要明确地表示一个变量没有值或一个对象没有引用时,可以将其赋值为null。

let a = null;
console.log(a); // 输出null

2、作为函数参数的默认值。当我们定义一个函数时,可以使用null作为某个参数的默认值,表示该参数没有传递任何值。(默认值是在变量或函数参数中指定的预设值,用于在没有明确赋值或传入参数时使用。

function greet(name = null) {
  console.log("Hello, " + (name ? name : "stranger"));
}

greet("John"); // 输出 "Hello, John"
greet(); // 输出 "Hello, stranger"

3、作为对象属性的初始值。当我们创建一个对象时,可以将某个属性的初始值设为null,表示该属性暂时没有值。(初始值指的是在声明变量但未给变量赋值时,变量的默认值。

let person = {
  name: "John",
  age: null
};

console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 null

4、与条件语句一起使用,表示某个条件下的空值。当我们需要根据条件来赋值给变量时,可以使用null来表示某个条件下的空值。

let result = null;
let condition = true;

if (condition) {
  result = "some value";
} else {
  result = null;
}

console.log(result); // 输出 null

undeclared(未声明)

概念:指的是在JavaScript代码中一个变量或标识符未被声明或定义。这是一个语法错误,因为JavaScript无法找到对应的上下文。这通常是由于拼写错误或者忘记声明变量导致的。
用法:
1、表示一个变量既没有被声明也没有被赋值。
2、当使用一个未声明的变量时,JavaScript会将其视为全局变量或引发           ReferenceError异常。
3、可以用来检查变量是否在代码中被声明。

console.log(a); // 抛出ReferenceError: a is not defined

function foo() {
  console.log(b); // 抛出ReferenceError: b is not defined
}

foo();

总结来说,"undefined"表示变量已经声明但没有赋值,"null"表示变量被明确赋予了一个空值,而"undeclared"表示变量或标识符没有被声明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值