位置: 编程技术 - 正文

JavaScript起点(严格模式深度了解)(js启动)

编辑:rootadmin
严格模式(Strict Mode)是ECMAScript5新增的功能。ECMAScript5虽然可以向后兼容ECMAScript3,但如果使用严格模式,哪些ECMAScript5“不在建议使用”的ECMAScript3语法功能将会被全部进制,如果出现就会抛出一行。引入Strict Mode目的是允许开发人员能够选择“更好”的Javascript版本,这个版本能用不同的方式处理那些普遍而又臭名昭著的错误。目前所有的主流浏览器的最新版本——包括IE与Opera——都支持严格模式。关于严格模式的大多数信息都可以在《ES5规范》[PDF]的第页找到。 如何启用严格模式 可以在全局范围内使用严格模式,也可以在一个函数范围内使用严格模式。如果要再全局范围内启用严格模式,只需要在程序的第一行使用代码即可: 在函数的内部启用严格模式,只需要在函数体内第一行使用代码即可: 启用严格模式的语句只是一段普通的字符串“use strict”,没有任何新语法。这意味着不会对就旧式浏览器造成任何负面影响,因此可以大胆使用。在函数内部启用严格模式的一个实际应用是,把整个Javascript类库定义在严格模式的函数内部,这样就可以不影响外部的代码: 严格模式带来了什么? 在开始介绍特殊特性之前,你需要记住,严格模式的目标之一是允许更快地调试错误。帮助开发者调试的最佳途径是当确定的问题发生时抛出相应的错误(throw errors when certain patterns occur),而不是悄无声息地失败或者表现出奇怪的行为(这正是如今不在严格模式下的Javascript做的)。严格模式下的代码抛出更多的错误信 息,这是好事,因为它能帮助开发者很快注意到一些必须立即解决的问题。去除with语句(Eliminates with) 首先,严格模式去除了with语句。当with语句出现在严格模式中时,它会被认为是非法的Javascript语句并抛出语法错误。所以,使用严格模式的第一步就是确保你没有在使用with。 防止意外的全局变量(Prevents accidental globals) 第二点是,变量在赋值之前必须声明。在非严格模式下,给一个未声明的变量赋值将自动生成一个该名字的全局变量。这是Javascript中最普遍的错误之一。严格模式中,这样做将抛出一个错误。 取消this值的强制转换(Eliminates this coercion) 另一个重要的变化是,当this值为null或undefined时,不会再将其强制转换为全局对象。也就是说,this保留了它的原始值,也因此可能会导致一些依赖于强制转换的代码发生错误。例如: 根本而言,this值必须赋值,否则将保留undefined值。这意味着调用构造函数时若漏掉了new关键字也会导致错误: 在这段代码里,调用Person构造函数时缺少了new关键字,此时this值为undefined。由于你不能给undefined添加属性,这段代码抛出了一个错误。在非严格模式下,this会强制转换为全局对象,因此name属性能够被正确赋值为全局变量。 拒绝重复(No duplicates)当你做了大量的编码的时候,你很容易在对象中定义了重复的属性或者给函数定义了重复的参数名。严格模式下,这两种情况都会导致错误的发生: 这两者都是语法错误,在代码执行之前将抛出错误。 更安全的eval()(Safer eval())eval()没有被移除,但它在严格模式下发生了一些变化。最大的改变是:在eval()语句中声明的变量以及函数不会在包含域中创建。例如: 任意由eval()创建的变量或函数仍呆在eval()里。然而,你可以通过从eval()中返回一个值的方式实现值的传递: 不可改变引发的错误(Errors for immutables) ECMAScript 5 同时引入了修改属性特征的能力,例如设置一个属性为只读或者冻结整个对象的结构(freezing an entire object's structure)。在非严格模式下,试图修改一个不可变的属性时将悄无声息地失败。你可能在使用一些原生APIs的时候已经遇到这类问题。严格模式将 保证无论你在何时试图使用一种不被允许的方式修改一个对象或对象的属性时抛出错误。 这个例子中,name属性被设置为只读。在非严格模式下,对name的赋值将悄无声息地失败;而在严格模式下,一个错误将被抛出。注:如果你在使用ECMAScript属性能力(the ECMAScript attribute capabilities),我强烈推荐你开启严格模式。如果你在改变对象的可变性(mutability of objects),你将遇到一堆错误,而它们在非严格模式下将被安静地带过。

推荐整理分享JavaScript起点(严格模式深度了解)(js启动),希望有所帮助,仅作参考,欢迎阅读内容。

JavaScript起点(严格模式深度了解)(js启动)

文章相关热门搜索词:javascript.,javascript起源,javascript cgi,javascript起源,javascripts,javascripts,javascriptz,javascript.,内容如对您有帮助,希望把文章链接给更多的朋友!

document.all的一个比较完整的总结及案例 一.document.all是页面内所有元素的一个集合。例如:document.all(0)表示页面内第一个元素二.document.all可以判断浏览器是否是IEif(document.all){alert("isIE!");}三.

js用Date对象处理时间实现思路及代码 先说说这次的应用场景:从XML文件中读取数据,然后将里面的数据返回到页面中用一个第三方插件进行绘图。在XML里读取出来的数据当然是字符串类型

表单元素的submit()方法和onsubmit事件应用概述 表单元素拥有submit方法,同时也具有onsubmit事件句柄,用于监听表单提交。可以使用elemForm.submit();方法触发表单提交。1、表单元素中出现了name="submit"的

标签: js启动

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

上一篇:js中parseFloat(参数1,参数2)定义和用法及注意事项(js parseint parsefloat)

下一篇:javascript克隆对象深度介绍(js如何深度克隆一个对象)

  • 旅游业成本具体有哪些
  • 收到投资土地使用权的会计科目
  • 预缴税款可以抵税吗
  • 废品销售是否缴纳增值税
  • 其他应付款在借方资产负债表怎么填
  • 农产品增值税抵扣政策文件
  • 营改增之后建筑企业哪些税可以抵扣
  • 认证发票密文有误不能抵扣如何处理?
  • 应收帐款从工资里扣税吗
  • 企业平时计提的税费分录
  • 单位租用个人住房合法吗
  • 事业单位职工福利费支出范围
  • 银行异地汇款抽奖需要扣缴个人所得税吗?
  • 企业汇算清缴后税务局会不会查
  • 汇总会计报表和合并会计报表均是
  • 自然人税收管理系统扣缴客户端app
  • 委托个人加工应税消费品纳税地点
  • 事业单位财政应返还额度包括
  • 旅行社差额征税税率5%
  • 电脑温度过高会怎么样
  • 电脑输入法切换键怎么设置
  • 电脑上加速网页的加速器
  • 王者荣耀中哪吒的图片
  • win10的病毒隔离有用吗
  • 坏账准备期末余额怎么计算
  • 新公司成立股份比例
  • 提前支付的费用记账
  • php curl命令详解
  • 修建污水处理厂施工方案包括哪些内容
  • 增值税红字专用发票什么意思
  • wordpress用什么语言编写
  • 成本费用科目包括
  • 增值税一般纳税人登记管理办法
  • php编译器与集成环境怎么安装
  • vue axios.all
  • gpt 4927
  • websocket怎么用
  • smarty模板引擎
  • 累计折旧当月增加当月减少
  • python中变量类型有几种
  • 医院累计折旧会计分录
  • 分组 sql
  • 购入商品再卖出
  • 出库成本会计分录
  • 小规模纳税人免税怎么做账
  • 进项税额有留底怎么做分录
  • 资金占用费怎么写
  • 弥补亏损账务处理流程
  • 应付账款扣除赔偿后开发票吗
  • 一般纳税人如何申报增值税
  • 累计折旧的借贷方表示
  • 职工福利费的计提比例为职工工资总额扣除奖金后的
  • 发票冲红的会计怎么处理
  • 不用人工
  • 车辆购置税退税申请表
  • 3%税率专用发票
  • 车船税没发票只交可以吗
  • 其他收益和营业外收入有什么区别
  • 应付账款和预收账款是负债吗
  • 文件历史版本功能
  • 微软停止更新win7
  • win10升级电脑
  • win8对机械硬盘不友好
  • 中国有多少台百万机组
  • WinXp x64sp企业订户最新完整纯净版安装指南
  • win7开机提示音在哪里关闭
  • linux查内存信息
  • unity开发3a
  • javascript事件模型介绍
  • c盘权限恢复默认设置
  • perl语句
  • shell echo-e
  • firefox怎样调整为中文
  • jQuery EasyUI之DataGrid使用实例详解
  • jQuery ajaxForm()的应用
  • java script和java区别
  • android xml文件有哪几种布局方式
  • 城乡医保怎么看有没有钱
  • 税务征收津贴发放范围
  • 统一社会信用代码有什么用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设