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

做游戏交易网站老王搜索引擎入口

做游戏交易网站,老王搜索引擎入口,网站icp备案去哪办理,网站建设有什么工作引言:JavaScript的进化史 从前从前,在编程语言的王国里,有一位名叫JavaScript的小伙子。1995年他出生时,只有var这一种变量声明方式。那时的他天真烂漫,行为随性,直到2015年ES6标准的到来,才为…

引言:JavaScript的进化史

从前从前,在编程语言的王国里,有一位名叫JavaScript的小伙子。1995年他出生时,只有var这一种变量声明方式。那时的他天真烂漫,行为随性,直到2015年ES6标准的到来,才为他带来了letconst两位严谨的伙伴,从此开启了JavaScript的"成人礼"。

第一章:老大哥var的"任性人生"

1.1 var的"越狱"行为

function prison() {var prisoner = "I'm here!";if (true) {var prisoner = "I escaped!"; // 同一个囚犯轻松越狱}console.log(prisoner); // "I escaped!" 
}

var就像个不守规矩的魔术师,它无视代码块的边界(块级作用域),在任何地方都能重新声明自己。这种"变量提升"(hoisting)的特性常常让新手开发者抓狂:

console.log(magician); // undefined 而不是报错!
var magician = "Houdini";

1.2 var的"派对狂欢"问题

在循环中使用var就像举办一场失控的派对:

for (var i = 0; i < 3; i++) {setTimeout(() => console.log(i), 100); // 3, 3, 3
}

所有客人(回调函数)看到的都是派对结束后的狼藉(最终值),而不是派对进行时的每个精彩瞬间。

第二章:let的"纪律部队"

2.1 let的"军事化管理"

ES6派来的"纪律委员"let解决了var的所有毛病:

let soldier = "at attention";
let soldier = "at ease"; // SyntaxError: 已经声明过啦!{let recruit = "in training";
}
console.log(recruit); // ReferenceError: 新兵不得擅自离营!

2.2 let的"时间胶囊"效应

在循环中使用let,每个迭代都会创建一个新的词法环境,就像给每个客人发了一个专属时间胶囊:

for (let i = 0; i < 3; i++) {setTimeout(() => console.log(i), 100); // 0, 1, 2
}

2.3 暂时性死区(TDZ)

let有个特别的安保措施——暂时性死区(Temporal Dead Zone):

console.log(agent); // ReferenceError: 特工身份尚未解密!
let agent = "007";

第三章:const的"终极防线"

3.1 const的"不可变宣言"

const就像军事基地的警告标志:

const MISSILE_SILO = "Danger Zone";
MISSILE_SILO = "Safe Zone"; // TypeError: 核按钮岂能随便按!

行业惯例:const常量全大写,像警示牌一样醒目。

3.2 const的"变形记"

但const有个神奇的特性——对于对象和数组,它锁定的只是"容器",而不是"内容物":

const LAB_SPECIMEN = {species: "werewolf"
};
LAB_SPECIMEN.species = "vampire"; // 完全合法!
LAB_SPECIMEN = {}; // TypeError: 容器不可更换!

3.3 冻结对象

想要真正不可变?可以使用Object.freeze

const HERO = Object.freeze({name: "Superman"
});
HERO.name = "Batman"; // 静默失败或在严格模式下报错

第四章:作用域大逃杀

4.1 作用域层级

JavaScript的作用域就像俄罗斯套娃:

  • 全局作用域:window/global这个大套娃
  • 函数作用域:var认识的中号套娃
  • 块级作用域:let/const认识的迷你套娃
const WORLD = "Earth"; // 全球通告function continent() {var country = "China"; // 全国通告if (true) {let city = "Beijing"; // 本市通告}
}

4.2 作用域链的"寻宝游戏"

当JavaScript查找变量时,它会像玩寻宝游戏一样层层向上:

const TREASURE = "gold"; // 第三层function pirateShip() {var TREASURE = "silver"; // 第二层if (true) {let TREASURE = "bronze"; // 第一层console.log(TREASURE); // "bronze"}
}

第五章:现代JavaScript开发指南

5.1 变量声明新规范

  1. 默认使用const:除非需要重新赋值
  2. 需要重新赋值时用let:如循环计数器
  3. 避免使用var:除非维护老旧代码
  4. 命名约定
    • CONSTANTS_IN_UPPERCASE
    • camelCaseForVariables
    • PascalCaseForConstructors

5.2 常见陷阱警示牌

🚧 const不保证对象内容不可变!
🚧 let在同一个作用域内不可重复声明!
🚧 var会穿透if/for等块级作用域!
🚧 未声明的变量会自动成为全局变量(严格模式禁止)!

第六章:幕后原理探秘

6.1 执行上下文的秘密

JavaScript引擎处理变量声明分为三个阶段:

  1. 创建阶段
    • var:初始化为undefined
    • let/const:未初始化(TDZ)
  2. 执行阶段
    • 变量赋值
    • const必须立即赋值

6.2 词法环境的结构

每个执行上下文都有一个关联的词法环境:

LexicalEnvironment
外部环境引用
环境记录
声明式记录
对象式记录

结语:选择正确的工具

就像超级英雄各有专长:

  • var:像死侍,打破常规但难以控制
  • let:像美国队长,纪律严明但灵活
  • const:像钢铁侠的战甲,坚固可靠但有特殊机制

在现代JavaScript开发中,我们应该:默认用const,需要重新赋值用let,永远不要用var(除非你在写1995年的复古代码)。

记住:伟大的代码能力伴随着重大的责任——选择正确的变量声明方式,让你的代码既安全又富有表现力!

http://www.dtcms.com/wzjs/57854.html

相关文章:

  • 建设项目环保竣工信息公开网站微信裂变营销软件
  • 哈尔滨快速建站服务热线免费网站制作软件平台
  • 在线学做衣服 的网站网络营销策划案例
  • 武汉企业网站推广收费吉安seo招聘
  • 3g免费网站制作成都关键词优化平台
  • 百度搜索排名怎么做卢镇seo网站优化排名
  • 网站算信息化建设百度网盘app免费下载安装老版本
  • 海宁市网站建设竞价托管推广多少钱
  • 请人做网站合同太原seo推广
  • 中沪红蚂蚁装潢公司网站seo推广方案
  • 北京厦门网站优化google秒收录方法
  • 版面设计素材网站网站建设情况
  • cms wordpress模板优化关键词排名工具
  • 渑池县建设局网站苏州优化网站公司
  • 保定建设银行网站首页seo赚钱吗
  • 网站域名怎么弄女生读网络营销与电商直播
  • 网站制作公司员工怎样做好竞价推广
  • 广州公司建设网站百度官网登录
  • 安徽华强建设集团网站b站怎么推广
  • 黄石网站设计公司搜索引擎营销概念
  • office 网站制作企业营销网站建设系统
  • 车牌照丢失能在网站做吗免费建网站软件哪个好
  • 邢台做网站流程品牌广告语
  • wordpress 设置多域名 一个站点东莞做网站推广的公司
  • wordpress可以建网站吗地推团队接单平台
  • 毕业设计做网站答辩会问什么手机优化软件哪个好
  • 汉南做网站女教师网课入06654侵录屏
  • 下沙开发区建设局网站产品营销策划方案3000字
  • t想学网站建设宁波网站建设公司哪家好
  • 如何进入网站后台管理系统搜索引擎入口官网