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

网站建设与设计教程视频wordpress评论上传图片

网站建设与设计教程视频,wordpress评论上传图片,wordpress主题模板免费,如何做品牌营销策划在JavaScript的魔法森林里,作用域和上下文是两位神秘的守护者,它们掌控着代码的逻辑流向和变量的生杀大权。今天,就让我们一起踏入这片神奇的土地,揭开全局作用域、函数作用域和闭包的神秘面纱,看它们如何影响我们的代…

在JavaScript的魔法森林里,作用域和上下文是两位神秘的守护者,它们掌控着代码的逻辑流向和变量的生杀大权。今天,就让我们一起踏入这片神奇的土地,揭开全局作用域、函数作用域和闭包的神秘面纱,看它们如何影响我们的代码逻辑。

一、全局作用域:魔法森林的广阔天地

全局作用域就像是魔法森林的广阔天地,所有在顶层定义的变量和函数都属于这片天地。在这里,变量和函数可以被森林中的任何角落访问。

// 全局作用域
let globalVar = "I'm global!"; // 全局变量function globalFunction() {console.log("I'm a global function!");
}globalFunction(); // 输出:I'm a global function!
console.log(globalVar); // 输出:I'm global!

但是,这片天地也充满了潜在的危险。如果变量名重复,后面的声明会覆盖前面的,就像一个调皮的精灵偷走了原来的变量。

let globalVar = "First value";
let globalVar = "Second value"; // 覆盖前面的声明
console.log(globalVar); // 输出:Second value

二、函数作用域:魔法城堡的神秘领地

函数作用域就像是魔法森林中一座座神秘的城堡,每个函数都有自己的领地。在城堡内部定义的变量和函数,只能在城堡内部使用。

function magicCastle() {let castleSecret = "The castle's secret"; // 函数内部变量function innerFunction() {console.log(castleSecret); // 可以访问城堡内部的变量}innerFunction(); // 输出:The castle's secret
}magicCastle();
// console.log(castleSecret); // 错误:castleSecret未定义

城堡之间也可以传递信息。一个城堡可以调用另一个城堡的函数,前提是这个函数在全局作用域中是可见的。

function firstCastle() {let message = "Hello from first castle";secondCastle(message);
}function secondCastle(msg) {console.log("Second castle received:", msg);
}firstCastle(); // 输出:Second castle received: Hello from first castle

三、闭包:隐藏的魔法密室

闭包就像是魔法城堡中隐藏的密室,它允许一个函数记住并访问其词法作用域,即使这个函数在其词法作用域之外被调用。

function createMagicRoom() {let secret = "Hidden secret"; // 隐藏的变量return function revealSecret() {console.log(secret); // 闭包可以访问createMagicRoom中的变量};
}let magicRoom = createMagicRoom();
magicRoom(); // 输出:Hidden secret

闭包可以用来创建私有变量和方法,就像密室中珍藏的宝藏,只有知道密室入口的人才能访问。

function treasureKeeper() {let treasure = "Golden coins"; // 私有变量return {getTreasure: function() {return treasure;},setTreasure: function(newTreasure) {treasure = newTreasure;}};
}let keeper = treasureKeeper();
console.log(keeper.getTreasure()); // 输出:Golden coins
keeper.setTreasure("Diamonds");
console.log(keeper.getTreasure()); // 输出:Diamonds

四、上下文:魔法施法者的身份

上下文决定了“this”关键字的值,就像是魔法施法者的身份。在大多数情况下,函数的上下文由调用方式决定。

let wizard = {name: "Gandalf",castSpell: function() {console.log(this.name + " casts a spell!"); // this指向wizard对象}
};wizard.castSpell(); // 输出:Gandalf casts a spell!

但是,如果我们把函数从对象中取出单独调用,上下文可能会改变。

let spellFunction = wizard.castSpell;
spellFunction(); // 输出:undefined casts a spell! (this指向全局对象)

为了保持上下文,我们可以使用箭头函数或bind方法。

let wizard = {name: "Gandalf",castSpell: () => {console.log(this.name + " casts a spell!"); // 箭头函数中的this指向定义时的上下文},castAnotherSpell: function() {console.log(this.name + " casts another spell!");}
};wizard.castSpell(); // 输出:undefined casts a spell! (箭头函数的this指向全局对象)
wizard.castAnotherSpell(); // 输出:Gandalf casts another spell!let boundSpell = wizard.castAnotherSpell.bind(wizard);
boundSpell(); // 输出:Gandalf casts another spell!

五、实战案例:魔法森林的宝藏寻踪

假设我们要在一个魔法森林中寻找宝藏,森林中有多个城堡,每个城堡都有自己的密室。我们需要利用闭包和作用域来找到宝藏。

// 全局作用域:魔法森林
let forestMap = "Map to the first castle";function firstCastle() {// 函数作用域:第一座城堡let castleKey = "Key to the secret room";function secretRoom() {// 函数作用域:密室let treasure = "Ancient artifact";console.log("Found treasure:", treasure);console.log("Using key:", castleKey);console.log("Following map:", forestMap);}return secretRoom;
}let findTreasure = firstCastle();
findTreasure(); // 输出:Found treasure: Ancient artifact// Using key: Key to the secret room// Following map: Map to the first castle

六、总结:掌握魔法的关键

在JavaScript的魔法森林中,理解作用域和上下文是掌握魔法的关键。全局作用域是广阔的天地,函数作用域是神秘的城堡,而闭包是隐藏的密室。通过巧妙地运用它们,你可以创建出结构清晰、逻辑严密的代码,就像一位技艺高超的魔法师,轻松驾驭复杂的魔法咒语。


文章转载自:

http://ApTR9yDA.hqscg.cn
http://2HVggAEu.hqscg.cn
http://ovIKcEYZ.hqscg.cn
http://P3PVZhKA.hqscg.cn
http://dTrHDgix.hqscg.cn
http://SDVwtOdG.hqscg.cn
http://4oFWcWxt.hqscg.cn
http://fx5zHh0O.hqscg.cn
http://ZFWHZrM5.hqscg.cn
http://3cYxOqWX.hqscg.cn
http://PDD2gHrx.hqscg.cn
http://cyCeRYUt.hqscg.cn
http://zwBj6QMv.hqscg.cn
http://OpZAzRY1.hqscg.cn
http://3NpSiD4L.hqscg.cn
http://qFTg5Fii.hqscg.cn
http://87U2KApL.hqscg.cn
http://rO1szGUy.hqscg.cn
http://UGsNvusp.hqscg.cn
http://dN43xOw1.hqscg.cn
http://KbNb8c17.hqscg.cn
http://GM49YKJF.hqscg.cn
http://IThPxjsB.hqscg.cn
http://Zi63WACA.hqscg.cn
http://mIkBF21h.hqscg.cn
http://Tlz8spwH.hqscg.cn
http://gh9xdf4g.hqscg.cn
http://82yQwbH7.hqscg.cn
http://s14PhUvy.hqscg.cn
http://TLrjv48F.hqscg.cn
http://www.dtcms.com/wzjs/625235.html

相关文章:

  • iis架设网站教程订阅号登陆平台
  • 想学网站建设 如何开始网站后台内容编辑器
  • 南京市公共工程建设 中心网站代理记账注册公司图片
  • 房产信息查询系统入口上海专业网站优化排名
  • 广东建设工程中标公示网站会计培训班一般多少钱
  • 嘉定企业网站开发建设代做视频的网站
  • 做数据分析的网站建设电影网站的关键
  • 做目的旅游网站的抽卡 wordpress
  • 深圳网站建设黄浦网络-骗子广东省门户网站建设的现状
  • 阿里云服务器win系统建站教程吉林省建设信息管理平台
  • 自己在网上怎么做网站全国的网站建设
  • 成都有实力的网站建设网站推广策划书的共同特点有哪些
  • 网站运营与网站策划商城式网站具备哪些功能吗
  • 怎么用织梦做购物网站网站建设 科目
  • 网站新闻不添加关键词超链接对优化有影响吗手机上怎么设计logo
  • 十大门户网站有哪些网站建设优化服务器
  • 成都谁做捕鱼网站郑州专业网站制作费用报价
  • 小城镇建设网站答案蚌埠的网站建设
  • 网站建设单子wordpress编辑器增加按钮
  • 心理网站模板模版网站和语言网站
  • 沈阳php网站广西建设执业资格注册中心
  • 宁夏建设工程质量安全监督网站商丘做网站的电话
  • 深圳响应式网站建设公司撰写网站策划书
  • dedecms下载站阳原网站建设
  • 慈溪高端网站设计网站设计分析案例
  • 网站seo诊断工具网站做视频好不好
  • 网站有源码 怎么建设建设企业网站收费吗
  • 西部数码网站工具网站设计动图怎么建设
  • 网页设计与网站建设试题及答案群晖 6 wordpress
  • 句容建设网站现在都不用dw做网站了吗