位置: 编程技术 - 正文

Javascript学习笔记3 作用域(javascript基础笔记)

编辑:rootadmin
在Javascript,全局环境本身就一个对象。在浏览器宿主中这个对象是window,而当Javascript用于其它非浏览器的宿主,如嵌入式的环境中,可能会是其它的对象。 在这里也纠正一个观念,有很多人都认为Javascript只在浏览器中使用,其实Javascript也能在很多非Web情况下使用,据介绍Javascript在一些基于嵌入式的应用领域表现得也很出色,当然这些我也只是听过传说而已。 言归正传,当我们写下:var i=1时,其实就是声明了一个window作用域的一个变量。 而当我们写下i=1时,是声明了一个window的属性。 看这样一段代码: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这段代码分别输出的结果是:undefined world,welcome china, hello china. 我们来分别解释: 在上文中,我们说过,在Javascript预编译时,会把所有var变量创建,默认值为undefined,我们在这里可以举一个例子: 我们可以写这样一段代码: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 当我们执行运行这段脚本时,可以发现,首先弹出undefined,然后回提示脚本错误,提示b不存在。由此就可以表明,a在预编译的过程中就已经被创建并且初始化为undefined,而b却只能在实际运行时按顺序去解释。其实在预编译后的Javascript代码可以近乎理解如下: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 接下来我们可以谈一下函数的作用域问题,每当代码运行进入一个函数时,Javascript引擎就会自动创建一个新的作用域,然后把这个新作用域作为当前作用域的子作用域,然后把当前的代码作用域切换到这个新作用域。当代码退出函数时,这个作用域销毁,把代码作用域交还给他的父作用域。 好,准备工作差不多了,接下来我们就来解释第一个问题:问什么会输出undefined world。 首先代码进行在预编译,当进入 Test方法时,开启一个新作用域,然后把全局作用域作为他的父作用域。然后对Test内的方法进行预编译,和上面的代码一样,Test方法被预编译后方法体大致如下: 当然,在当前作用域下无法找到b,于是他就会到他的父作用域下,也就是全局作用域找到了b=“world”。于是也就产生了这样的结果。 第二次弹出welcome china,没什么好说的。 第三次,弹出hello china。我们可以这样理解,var a 只是 方法Test的一个局部变量,而b由于事先未声明,因此他会去父作用域中去找到对应的定义。 好,接下来,我们再看一下这个方法的若干个变体。 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 首先,我们将方法体内的var a改成a,我们先不看答案,直接来分析,首先,在预编译阶段,方法体内几乎没有任何改变,因此此时a和b一样,都要去他们的父作用域中去寻找,因此第一次出的结果应该是hello world,第二次没什么说的:welcome china,第三次由于a和b在本作用域内都没有事先定义,因此都是再改变父作用域内的值,因此应该输出welcome china. 我们继续: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 和上面的分析一样,应该输出undefined undefined,welcome china,hello world. 继续: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 应该是undefined world,welcome china,hello china. 经试验,都没问题, 不知道你明白了么? 因此我们可以得出,每个变量在找不到自己的定义时,都会沿着作用链向上寻找,这样就很可能会出现未预知的错误,给排错添加了很多困难。更麻烦的是,还可能会对父作用域上的变量值进行修改,因此我们在声明变量时应该尽量加上var,尽管Javascript并不强迫我们这样做。

推荐整理分享Javascript学习笔记3 作用域(javascript基础笔记),希望有所帮助,仅作参考,欢迎阅读内容。

Javascript学习笔记3 作用域(javascript基础笔记)

文章相关热门搜索词:javascript教程,javascript教程推荐知乎,javascript学习指南,javascript教程,javascript教程推荐知乎,javascript教程推荐知乎,javascript教程推荐知乎,javascript教程推荐知乎,内容如对您有帮助,希望把文章链接给更多的朋友!

Javascript学习笔记4 Eval函数 eval的作用其实很简单,就是把一段字符串传递给JS解释器,由Javascript解释器将这段字符串解释成Javascript代码,并且执行他。举个最简单的例子:scripttyp

Javascript学习笔记5 类和对象 面向对象语言三大特点:继承,多态,封装,这三点虽然Javascript没有提供天然的语法实现,但是我们都可以通过prototype等技巧来实现,因此这种说法似

Javascript学习笔记6 prototype的提出 首先我们继续上文的代码,我们来把这段代码延伸一下:scripttype="text/javascript"varPerson=function(name,age){this.name=name;this.age=age;this.Introduce=function(){alert("Mynamei

标签: javascript基础笔记

本文链接地址:https://www.jiuchutong.com/biancheng/382896.html 转载请保留说明!

上一篇:Javascript学习笔记2 函数(javascript教程推荐知乎)

下一篇:Javascript学习笔记4 Eval函数(javascript要怎么学)

  • 什么时候要计提坏账准备
  • 小规模纳税人租赁不动产税率
  • 购入国内旅客运输服务
  • 建筑服务预征缴纳税款包括附加税吗
  • 普票不能抵扣要坐在帐里吗
  • 两个公司如何一起经营
  • 小规模企业所得税计算
  • 增值税专用发票明细太多怎么办
  • 商品进销差价属于流动资产吗
  • 投资款返还案例
  • 工资发放凭证由谁出具
  • 其他权益工具投资是什么类科目
  • 企业所得税年报错了怎么更正
  • 滞纳金可以个人承担吗
  • 养殖业土地使用税减免
  • 收到赞助费如何做分录
  • 福利进项税额转出怎么做账务处理
  • 自行建造固定资产的计税基础
  • 企业所得税税负怎么算
  • 从事旅游的小型微利企业能享受哪些优惠?
  • 连年亏损的企业因为具有递延税金的优势
  • 企业捐赠现金支出应在哪个项目反应
  • 红字增值税专用发票信息表怎么填
  • 公司转账不开票备注服务费怎么入账
  • 当月认证的发票当月一定要入账吗
  • 电信猫光信号灯不亮
  • linux清理磁盘空间
  • 预付工程款如何计提坏账
  • 外贸公司收汇可以收运费吗
  • 三星电脑安装系统按哪个键
  • 纳税调整需要调年度报表嘛
  • os x yosemite wifi断线怎么办?yosemite wifi掉线解决详细步骤
  • yolov5网络优化
  • 实收资本与注册资本之间的关系
  • 行政事业单位会计职责
  • php魔术函数
  • 开展党建系列活动
  • pytorch基础教程
  • PHP中使用关键字什么来指明类与类之间的继承关系
  • 2023前端面试题目100及最佳答案
  • 应税货物及劳务无法录入
  • admit允许
  • 代理费与代理运费的区别
  • 工业企业生产费用最基本的分类是
  • 新政府会计制度下,属于资产类科目的是
  • 会计凭证分为几个部分包括哪些内
  • 公司买手表可以抵扣增值税吗
  • 对增值税发票开具方面是有何要求?
  • 接受捐赠的固定资产按什么入账
  • 工程项目买保险需要哪些资料
  • 商品盘点短缺
  • 员工宿舍发生事故赔偿吗
  • 公司支付的培训费需要交税吗
  • 折扣怎么写会计分录
  • 贷款服务有哪些项目
  • 没有销货清单的发票可以报销吗
  • 分公司需要做税务报道吗
  • 股东股权转让会计分录
  • sql语句参数值
  • win8系统笔记本怎么恢复出厂设置
  • 微软官方的网址是多少
  • linux find命令查找文件名
  • win10升级 其他用户
  • win8系统咋样
  • win10多用户独立
  • 安卓笔记软件squid使用教程
  • unityxlua热更新方案
  • unity删除对象
  • 安卓工程如何正常启动
  • python错误代码
  • 优化ui界面是啥意思
  • js domcontentloaded
  • jquery ajax分页插件的简单实现
  • 从零开始学公文写作
  • unity相关问题
  • 会计餐费费的会计分录
  • 佛山市地税局办公室主任
  • 税务执法审批表审批部门
  • 电子发票美元如何查询
  • 黔西南州医疗保险报销比例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设