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

网站开发流程顺义顺德网站建设

网站开发流程,顺义顺德网站建设,衡水冀县做网站,杭州定制网站公司ECMAScript 5 引入了 strict mode ,现在已经被大多浏览器实现#xff08;从IE10开始#xff09;一、什么是严格模式顾名思义#xff0c;JavaScript 严格模式就是让 JS 代码以更严格的模式执行#xff0c;不允许可能会引发错误的代码执行。在正常模式下静默失败的代码#…ECMAScript 5 引入了 strict mode ,现在已经被大多浏览器实现从IE10开始一、什么是严格模式顾名思义JavaScript 严格模式就是让 JS 代码以更严格的模式执行不允许可能会引发错误的代码执行。在正常模式下静默失败的代码严格模式下就会抛出错误。二、为什么要过渡到严格模式严格模式下的代码在运行的时候更容易通过抛出的错误定位到问题所在的地方 严格模式能够帮助你编写更符合规范的代码 消除 JavaScript 语言上一些不合理比较怪异的行为 为未来新版本的 JavaScript 做铺垫 有时候严格模式下的 JavaScript 代码运行起来更快 三、如何使用· 脚本文件范围将 use strict; 放在脚本文件的第一行。整个脚本文件就会以“严格模式”执行。· 函数作用域范围 将 use strict; 放在函数体的第一行则整个函数以严格模式运行。文件合并时写在脚本文件第一行的 use strict; 来实现严格模式会失效可以将脚本文件的代码放在一个立即执行表达式中。(funciton() {use strict;... })() 四、严格模式的具体定义严格模式下无法再隐式创建全局变量 也就是变量必须声明后才能使用正常模式直接赋值给一个未定义的变量时会将变量定义为全局变量。use strict; var a b 3; // Uncaught ReferenceError: b is not defined ​ 以上代码等于 var a; b 3; a b; ​ 禁止 this 关键字指向全局对象 正常模式下函数中如果没有指明 this 对象JS 则会将 this 隐式指向为全局对象。如果绑定的值是非对象将被自动转为对象再绑定上去而 null 和 undefined 这两个无法转成对象的值将被忽略。严格模式下必须指明 this 的指向对象。如果没有指明的话this的值为 undefinedvar name foo; function func() {use strict;this.name; // Uncaught TypeError: Cannot read property name of undefined } func(); // 没有加 new 关键字 new func(); ​ function func() {return this } ​ func() // window func.call(8) // Number {8} func.call(true) // Boolean {true} func.call(abcd) // {abcd} func.call(null) // window func.call(undefined) // window ​ use strict function func() {return this } ​ func() // undefined func.call(8) // 8 func.call(true) // true func.call(null) //null func.call(undefined) // undefined 不允许在函数内部遍历调用栈 禁止使用 arguments.callee、arguments.caller、fn.caller、fn.callee; 在严格模式下arguments.callee 是一个不可删除属性而且赋值和读取时都会抛出异常function func() {use strict;func.caller; // 报错func.arguments; // Uncaught TypeError: caller, callee, and arguments properties may not be accessed on strict mode functions or the arguments objects for calls to them } func() 禁止向对象的只读属性赋值禁止删除对象的不可设置属性, 禁止向不可扩展的对象添加属性 无法删除 var 声明的变量。在正常模式中给对象的只读属性赋值, 删除对象的不可设置属性添加不可扩展对象的新属性会静默失败。但是在严格模式中会抛出错误。 另外字符串的属性 length 也是只读属性修改后会报错。use strict; var str abc str.length 8 // Uncaught TypeError: Cannot assign to read only property length of string abc ​ use strict; var obj Object.defineProperty({}, a, {value: 37,writable: false }); obj.a 123; // Uncaught TypeError: Cannot assign to read only property a of object # ​ use strict; var obj Object.defineProperty({}, p, {value: 37,configurable: false }); delete obj.p // Uncaught TypeError: Cannot delete property p of #Object ​ var obj {}; Object.preventExtensions(obj); obj.title hello; // Uncaught TypeError: Cannot add property title, object is not extensible 对象不允许有重名的属性函数不允许有重名的参数 在正常模式中对象的重名属性位置靠后会覆盖位置靠前的重名属性。函数也是函数体查找到的参数靠后的重名参数会覆盖靠前的重名参数。use strict; var o { p: 1,p: 2}; // IE报错strict 模式下不允许一个属性有多个定义, 新版的 Chrome 和 firefox 并不会报错会采用覆盖机制。 ​ use strict; function func(a, a) {console.log(a) } func(1, 2) // IE报错 strict 模式下不允许正式参数名称重复。新版的 Chrome 和 firefox 并不会报错会采用覆盖机制。 静态绑定 JavaScript 支持动态绑定也就是 JavaScript 的属性和方法是在运行时确定而不是在编译时确定。 于是JavaScript 严格模式禁用了 with 语句, 因为使用了 with 语句with 语句块中变量无法确定是外部全局变量还是传入的对象属性。use strict; var x 17; with (obj) // !!! 语法错误 {// 如果没有开启严格模式with 中的这个x会指向 with 上面的那个 x还是obj.x// 如果不运行代码我们无法知道因此这种代码让引擎无法进行优化速度也就会变慢。x; // Uncaught SyntaxError: Strict mode code may not include a with statement } eval 关键字不再会给上层函数(surrounding function)或者全局引入一个新的变量。在严格模式中eval 语句会创建自己的一个作用域eval 里的变量只能在 eval 内部使用。arguments 的限定 严格模式规定名称为 eval 和 arguments 不能通过程序语法被绑定(be bound)或赋值 严格模式下参数的值不会随 arguments 对象的值的改变而变化。 正常模式中对参数重新赋值会修改 arguments 类数组对象下的参数值。同时修改 arguments 类数组对象的值也会修改函数参数的值。 严格模式下不仅参数的值不会随着 arguments 类数组对象的变化而变化参数的变化也不会引起 arguments 对象的变化arguments 对象会记住参数的传入初始值。function func(a) { use stricta 8;// arguments[0] 8return [a, arguments[0]] } ​ func(3) // [8, 3] ​ function func(a) { use strictarguments[0] 8return [a, arguments[0]] } ​ func(3) // [3, 8] ES5禁止在非函数代码块声明函数 ES5 的严格模式只允许在全局作用域或函数作用域声明函数。也就是说不允许在非函数的代码块内声明函数。if (true) {function add() {} } add()for (var i 0; i 5; i){function f2() { } // !!! 语法错误f2(); }以上代码在严格模式是禁止的但是在 ES6 中是允许在代码块中声明函数的。 保留关键字 严格模式中一部分字符变成了保留的关键字。这些字符包括implements, interface, let, package, private, protected, public, static和yield。在严格模式下你不能再用这些名字作为变量名或者形参名function private() {use strict } //Uncaught SyntaxError: Unexpected strict mode reserved word 严格模式禁止八进制数字语法五、向严格模式过渡严格模式能够帮助我们写出更安全更有规范的代码则应该避免一些危险的写法采用更好的写法变量先声明再使用this 应该在指向自己创建的对象时使用。arguments 应该在函数第一行就拷贝出来。 六、严格模式的缺点现在的代码都会进行文件压缩和合并此时严格模式就会失效。总结现在的 webpack 会在打包的时候默认是严格模式所以现在不用再手动写 use strict了。严格模式能帮助我们以更规范的方式书写代码但是无论是否严格模式都应该注意代码的规范避免隐式 bug 的出现。2018/02/08 Starbucks欢迎关注我的个人公众号“谢南波”专注分享原创文章。
http://www.pierceye.com/news/700748/

相关文章:

  • 俄语网站推广工程公司名称大全
  • 怎么知道网站是php什么是网站推广?
  • 温州在线课堂番禺网站建设优化
  • php怎么做网站快大都会app下载最新版本
  • 麻城网站建设公司网络推广公司挣钱吗
  • t型布局网站的样子自己做的网站如何上传
  • 排版设计模板网站百度搜索下载安装
  • 网站页面建设需要ps吗网站建设结单 优帮云
  • 网站建设对我有什么好处网站首页被k 做跳转
  • 美辰网站建设网站建设公司转型做什
  • 创意网站界面怎么查注册公司的名字可不可以用
  • 微友说是做网站维护让帮忙投注中小企业经营管理培训班
  • 网站开发宣传标语虚拟币挖矿网站开发
  • wordpress是否免费网站移动端seo
  • 加盟网站建设服务极简风格 wordpress
  • phpcms v9 网站模板seo优化的技巧
  • 域名备案网站要不要关7k7k网页游戏
  • 虚拟主机发布网站吗汕头建站平台
  • wap站是什么意思啊阿里云建设网站的步骤
  • 网站备案 异地可以做视频的网站
  • 淘宝网站c 设计怎么做安卓手机做网站
  • 嘉兴做网站建设的公司电商网名大全
  • 欢迎访问中国建设银行网站密码重置wordpress wp_parse_args
  • 普通电脑可以做网站服务器吗找人做网站需要什么条件
  • 长沙公司网站的建设网站图片尺寸
  • 高端网站定制费用是多少php网站建设制作
  • 广州营销型网站建设费用wordpress最新版下载
  • 洛阳网站设计公司xiamiplayer for wordpress
  • 做网站模版形象墙logo墙设计图
  • 视频网站怎么做防盗链好的装修效果图网站