当前位置: 首页 > wzjs >正文

网站开发 验收标准卓老师建站网站后台如何直接登陆

网站开发 验收标准,卓老师建站网站后台如何直接登陆,中国煤炭建设协会网站qc,code snippet wordpress在 JavaScript 的调试过程中,你是否经常看到 undefined 却不知其来源?是否曾被 ReferenceError: xxx is not defined 的错误提示困扰?这两个看似相似的概念,实际上是 JavaScript 类型系统中最重要的分水岭。本文将带你拨开迷雾&am…

在 JavaScript 的调试过程中,你是否经常看到 undefined 却不知其来源?是否曾被 ReferenceError: xxx is not defined 的错误提示困扰?这两个看似相似的概念,实际上是 JavaScript 类型系统中最重要的分水岭。本文将带你拨开迷雾,彻底理解它们的本质区别。


一、基础概念:两顶不同的"帽子"

1. undefined:已声明但未赋值的状态

  • 存在性:变量存在于当前作用域

  • 默认值:变量声明后的初始状态

  • 类型typeof undefined 返回 "undefined"

  • 合法操作:可以安全访问

javascript

复制

下载

let student;
console.log(student); // undefined
console.log(typeof student); // "undefined"

2. not defined(未定义):根本不存在的标识符

  • 存在性:标识符未在任何作用域声明

  • 错误类型:触发 ReferenceError

  • 类型检测typeof 的特殊处理

  • 危险操作:直接访问会中断代码

javascript

复制

下载

console.log(nonExistentVar); // ReferenceError: nonExistentVar is not defined
console.log(typeof nonExistentVar); // "undefined" (特殊行为)

二、核心差异对比表

特征undefinednot defined
变量存在性✅ 已声明❌ 未声明
错误类型ReferenceError
typeof 检测"undefined""undefined"(特殊处理)
严格模式下的表现行为不变立即报错(传统模式可能隐式创建全局变量)
常见场景1. 变量声明未赋值
2. 函数无返回值
3. 访问对象不存在的属性
1. 拼写错误
2. 未导入模块
3. 作用域错误

三、深度解析特殊场景

1. typeof 的"谎言"

javascript

复制

下载

// 已声明但未赋值
let declaredVar;
console.log(typeof declaredVar); // "undefined"// 从未声明
console.log(typeof ghostVar); // "undefined" (不会报错!)

⚠️ 这是 JavaScript 的安全机制:typeof 对未声明变量返回 "undefined" 以防止报错,但这可能掩盖真正的引用错误。

2. 函数参数中的 undefined

javascript

复制

下载

function greet(name) {console.log(`Hello, ${name}!`);
}greet(); // "Hello, undefined!"

此处 name 参数处于已声明但未赋值的状态,与未定义变量完全不同。

3. 对象属性的微妙区别

javascript

复制

下载

const obj = { existing: null };console.log(obj.existing); // null
console.log(obj.nonExisting); // undefined
console.log(nonExistingObj.prop); // ReferenceError
  • obj.nonExisting:属性不存在 → 返回 undefined

  • nonExistingObj:变量未声明 → 抛出错误


四、现代 JavaScript 的演进

1. 暂时性死区(TDZ)

javascript

复制

下载

console.log(tmp); // ReferenceError (not defined)
let tmp = 10;

ES6 的 let/const 声明存在暂时性死区,在声明前访问会触发真正的引用错误。

2. 默认参数值

javascript

复制

下载

function log(message = "No message") {console.log(message);
}log(undefined); // "No message"
log(); // "No message"

明确区分 undefined 和未传参的不同处理。

3. 可选链操作符(?.)

javascript

复制

下载

const data = { user: null };console.log(data.user?.name); // undefined
console.log(data.nonExistingUser?.name); // undefined
console.log(nonExistingData?.user); // ReferenceError

新型语法仍要区分变量存在性与属性访问的区别。


五、调试技巧与最佳实践

1. 错误处理策略

javascript

复制

下载

// 安全检测未声明变量
if (typeof possiblyUndefined !== 'undefined') {// 变量已声明
}// 现代方式(推荐)
try {possiblyUndefined;
} catch (e) {console.log('变量未声明');
}

2. ESLint 规则配置

javascript

复制

下载

// .eslintrc
{"rules": {"no-undef": "error",        // 禁止使用未声明变量"no-undefined": "warn"      // 避免与 undefined 直接比较}
}

3. TypeScript 的类型安全

typescript

复制

下载

let score: number;
console.log(score); // Error: Variable 'score' is used before being assignedconsole.log(notDeclared); // Error: Cannot find name 'notDeclared'

六、终极对比:内存视角


(undefined 变量在内存中有存储位置但无值,not defined 变量没有内存分配)

  • undefined:在作用域中注册标识符 → 分配内存空间 → 存入 undefined 值

  • not defined:未在作用域中注册 → 无内存分配 → 引擎抛出异常


总结:掌握区别,写出健壮代码

决策树undefinednot defined
是否会导致程序崩溃?❌ 不会✅ 会
是否表示逻辑缺失?✅ 是(需处理默认值)❌ 是(需修正代码错误)
是否应该显式检查?视情况而定必须立即修复

最佳实践清单

  1. 始终使用 let/const 声明变量

  2. 开启严格模式('use strict'

  3. 使用 ESLint 等静态检查工具

  4. 对可选参数显式设置默认值

  5. 使用 === undefined 进行精确判断

  6. 避免直接与 undefined 比较(可使用 void 0 替代)

理解这两个概念的本质区别,将帮助你:

  • 更准确地调试代码

  • 编写更安全的类型检查

  • 避免隐式的全局变量污染

  • 深入理解 JavaScript 的作用域机制

记住:undefined 是语言设计的产物,而 not defined 总是意味着代码存在需要修复的问题。


文章转载自:

http://QNmqig2R.nrmyj.cn
http://gsCxGGpE.nrmyj.cn
http://mP76HmpF.nrmyj.cn
http://onYtfa9K.nrmyj.cn
http://mV4JS184.nrmyj.cn
http://UCm0bZ0M.nrmyj.cn
http://fD5FBPpw.nrmyj.cn
http://4Nfd95pM.nrmyj.cn
http://XoU1NitF.nrmyj.cn
http://h9paUGvj.nrmyj.cn
http://MeKVzXMW.nrmyj.cn
http://fx8dsz1Q.nrmyj.cn
http://g4vOH0RK.nrmyj.cn
http://PWxiLziX.nrmyj.cn
http://q4nz5PFp.nrmyj.cn
http://5vPllLBr.nrmyj.cn
http://53OF8AwA.nrmyj.cn
http://mMJIcwbe.nrmyj.cn
http://hld8rLR4.nrmyj.cn
http://35lLDHnJ.nrmyj.cn
http://0syhpg8a.nrmyj.cn
http://XQorQGQa.nrmyj.cn
http://25nbzAgW.nrmyj.cn
http://Z8oQlpJt.nrmyj.cn
http://1aVgU3YX.nrmyj.cn
http://mDiAkHIM.nrmyj.cn
http://tl6gELJf.nrmyj.cn
http://5At5baEu.nrmyj.cn
http://4xWNe6ea.nrmyj.cn
http://99fabbfS.nrmyj.cn
http://www.dtcms.com/wzjs/627276.html

相关文章:

  • 网站建设公司业务在哪里来上海网站建设微信开发
  • 那个网站域名估价好杭州网站开发 网站建设
  • 如网站站长如何对付黑客国外专业做集装箱别墅网站
  • 福田专业网站建设公司哪家好昆明淘宝网站建设
  • 用vs2010做网站论文闸北集团网站建设
  • 最新网站备案教程儿童摄影网站源码
  • 人与狗做的网站谁有做seo需要建网站吗
  • 淘宝商城网站建设申请域名地址
  • 创建网站需要什么技术济南网站建设(选聚搜网络)
  • 网站内容的创新云南省建设厅官方网站证书
  • 创建网站平台深圳知名网络优化公司
  • 重庆做网站怎么做呀网站建设考核标准
  • 给公司建网站需要多少钱地址生成器
  • 网站微信开发外贸网站设计与推广
  • 做网站的命题依据做的网站在ie会乱码
  • 在线生成网站做网站都要买出口带宽吗
  • 公司网站主页模板济宁做网站大约多少钱
  • 做阿里巴巴网站找谁苏州建站公司优搜苏州聚尚网络
  • 企业网站程序带wapgoogle搜索优化
  • 正规的常州网站推广wordpress gd
  • wordpress文章 插件seo搜索价格
  • 网站优化 推广物联网网站设计
  • 个人网站模板h5阜阳哪里做网站的多
  • 手机企业网站如何建设wordpress 分页
  • 工信部网站备案怎么查中企动力属于国企吗
  • 石家庄鹿泉网站建设it运维管理系统
  • 阿里巴巴国际站怎么开店网页制作格式
  • dede减肥网站源码郑州网站制作生产厂商定制
  • 坪山网站建设行业现状整合营销方案
  • 做dj网站能赚钱吗中国建设银行官网下载中心