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

江西建设职业技术学院最新官方网站0731网站

江西建设职业技术学院最新官方网站,0731网站,旅游网站建设备案,白山镇seo快速排名设立严格模式的原因#xff1a; - 消除Javascript语法的一些不合理、不严谨之处#xff0c;减少一些怪异行为; - 消除代码运行的一些不安全之处#xff0c;保证代码运行的安全#xff1b; - 提高编译器效率#xff0c;增加运行速度#xff1b; - 为未来新版本的Javascrip… 设立严格模式的原因   - 消除Javascript语法的一些不合理、不严谨之处减少一些怪异行为;   - 消除代码运行的一些不安全之处保证代码运行的安全   - 提高编译器效率增加运行速度   - 为未来新版本的Javascript做好铺垫。 严格模式体现了Javascript更合理、更安全、更严谨的发展方向IE 10在内的主流浏览器 use strict;//是进入严格模式的标志(老版本的浏览器会把它当作一行普通字符串加以忽略。) 将use strict放在脚本文件的第一行则整个脚本都将以严格模式运行。如果这行语句不在第一行则无效整个脚本以正常模式运行。 针对原文这样的描述我已做过尝试例如     script typetext/javascript;use strict;a1;console.log(a)//1/script script typetext/javascript;use strict;a1;console.log(a)//1/script script typetext/javascriptuse strict;a1;//报错console.log(a)/script 以上的三种情况的测试所以我暂且认为 ‘use strict’  是一定要放在第一行的。且前面不能有其他代码。 一如何调用 1.1、针对整个脚本文件  scriptuse strict;console.log(这是严格模式。);/scriptscriptconsole.log(这是正常模式。);/script  1.2、针对单个函数 将use strict放在函数体的第一行则整个函数以严格模式运行。  function strict(){use strict;return 这是严格模式。;}function notStrict() {return 这是正常模式。;} 1.3、脚本文件的变通写法 因为第一种调用方法不利于文件合并所以更好的做法是借用第二种方法将整个脚本文件放在一个立即执行的匿名函数之中。 script typetext/javascript (function(){use strict;function strict(){a1;console.log(a)}strict();function notStrict() {var a1;console.log(a)}notStrict();})()/script   二语法和行为的改变 2.1、全局变量显式声明 严格模式在严格模式下变量必须先用var声明然后再使用   use strict;a2;console.log(a)//报错for(i0;i5;i){ //报错console.log(i)} 正常模式 a2;console.log(a)//2for(i0;i5;i){console.log(i)//0 1 2 3 4}  2.2、静态绑定 1禁止使用with()语句 2创设eval作用域 正常模式下Javascript语言有两种变量作用域scope全局作用域和函数作用域。严格模式创设了第三种作用域eval作用域。 正常模式下eval语句的作用域取决于它处于全局作用域还是处于函数作用域。严格模式下eval语句本身就是一个作用域不再能够生成全局变量了它所生成的变量只能用于eval内部。 三、增强的安全措施 1禁止this关键字指向全局对象        function fn(){return !this;}console.log(fn())//false 因为this指向全局对象!this就是falsefunction fn2(){use strictreturn !this;}console.log(fn2())//true 因为严格模式下this的值为undefined所以!this为true。function fn3(){use strictreturn this;}console.log(fn3())//undefined 因为严格模式下this的值为undefined。  因此使用构造函数时如果忘了加newthis不再指向全局对象而是报错。   function fn(){use strictthis.a1;}fn()//报错this未定义 2禁止在函数内部遍历调用栈 function fn(){use strict;f1.caller; // 报错f1.arguments; // 报错}fn(); 四 禁止删除变量 严格模式下无法删除变量。只有configurable设置为true的对象属性才能被删除。   在非严格模式下是如何删除变量的 1对象属性可以删除 var obj{name:lili,age:18,sex:女}delete obj.name;console.log(obj.name)//undefined console.log(obj)//{age: 18, sex: 女} 2无法直接删除变量        var a1;delete a;console.log(a) //1 3删除不了原型链中的变量        function fun(){this.name lili;}var obj new fun();fun.prototype.age 18;delete obj.age;console.log(obj.age) //18  4显式报错 正常模式下对一个对象的只读属性进行赋值不会报错只会默默地失败。严格模式下将报错。         var o {};Object.defineProperty(o, v, { value: 1, writable: false });o.v 2;console.log(o)//1 虽然没有改变但是也没有报错        use strict;var o {};Object.defineProperty(o, v, { value: 1, writable: false });o.v 2; // 报错console.log(o) 严格模式下对一个使用getter方法读取的属性进行赋值会报错。        var o {get v() { return 1; }};o.v 2; console.log(o.v)//1 虽然没有改变但是没有报错       use strict;var o {get v() { return 1; }};o.v 2; // 报错console.log(o.v) 严格模式下对禁止扩展的对象添加新属性会报错。        var o {};Object.preventExtensions(o);o.v 1;console.log(o)//空对象       use strict;var o {};Object.preventExtensions(o);o.v 1; //console.log(o) 严格模式下删除一个不可删除的属性会报错。 delete Object.prototype; //无影响 use strict; delete Object.prototype; // 报错 5重名错误 5.1对象不能有重名的属性 原文档如此表述但经过我测试只有在IE10和IE11的时候才会报错 strict 模式下不允许一个属性有多个定义基本上常规浏览器就是最后赋值 的属性覆盖掉前面的属性。 5.2 函数不能有重名的参数 正常模式下如果函数有多个重名的参数可以用arguments[i]读取。严格模式下这属于语法错误。   function f(a, a, b) { return a;}f();        use strict;function f(a, a, b) { // 语法错误return a;}f(); 6禁止八进制表示法 正常模式下整数的第一位如果是0表示这是八进制数比如0100等于十进制的64。严格模式禁止这种表示法整数第一位为0将报错。  use strict;var n 0100; // 语法错误 7 arguments对象的限制 arguments是函数的参数对象严格模式对它的使用做了限制。 1 不允许对arguments赋值   use strict;   arguments; // 语法错误   var obj { set p(arguments) { } }; // 语法错误   try { } catch (arguments) { } // 语法错误   function arguments() { } // 语法错误   var f new Function(arguments, use strict; return 17;); // 语法错误 2 arguments不再追踪参数的变化   function f(a) {     a 2;     return [a, arguments[0]];   }   f(1); // 正常模式为[2,2]   function f(a) {     use strict;     a 2;     return [a, arguments[0]];   }   f(1); // 严格模式为[2,1] 3 禁止使用arguments.callee 这意味着你无法在匿名函数内部调用自身了。   use strict;   var f function() { return arguments.callee; };   f(); // 报错 8 函数必须声明在顶层 将来Javascript的新版本会引入块级作用域。为了与新版本接轨严格模式只允许在全局作用域或函数作用域的顶层声明函数。也就是说不允许在非函数的代码块内声明函数。   use strict;   if (true) {     function f() { } // 语法错误   }   for (var i 0; i 5; i) {     function f2() { } // 语法错误   } 9 保留字 为了向将来Javascript的新版本过渡严格模式新增了一些保留字implements, interface, let, package, private, protected, public, static, yield。 使用这些词作为变量名将会报错。   function package(protected) { // 语法错误     use strict;     var implements; // 语法错误   } 此外ECMAscript第五版本身还规定了另一些保留字class, enum, export, extends, import, super以及各大浏览器自行增加的const保留字也是不能作为变量名的。             参考http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html转载于:https://www.cnblogs.com/xumqfaith/p/7841338.html
http://www.yutouwan.com/news/104319/

相关文章:

  • 网站内移动的图片怎么做的多语言网站开发公司
  • 网站建设销售客户疑问企业网站 wordpress
  • 电子商务网站建设基础万网虚拟机怎么做两个网站
  • 服务网站建设公司深圳比较大的贸易进口公司
  • 黄金网站app免费视频下载网站的规划建设与分析
  • 免费注册163免费邮箱百度seo效果怎么样
  • 网站有可能搜不到吗网站建设策划书网站发布与推广
  • 网站建设价格标准案例动漫制作专业大学排名
  • 叫任何一个人一个小时做网站linux做网站配置
  • 个人网站制作程序鞍山企业网站建设
  • 国外地图搜房网站建设装饰工程公司
  • 网站开发怎样验收wordpress mysql索引
  • 长沙专业网站建设服务php网站在线打包源码
  • 网站模板整站做网站的程序
  • 做网站现在赚钱吗网站权重收录
  • 基于分布式控件的网站开发框架医疗网站优化公司
  • 商会网站建设方案书百度网站权重排名
  • vs可以做网站吗集团网站建设计划表百度
  • 郑州seo关键词推广wordpress模板优化
  • 网站开发和设计access 网站开发
  • 什么是网站销售贴吧网站开发需求分析
  • 建设银行网站查询密码怎么设置开源的公司网站
  • 网站的404如何做海外社交平台推广
  • 公司的网站如何编辑搜索引擎优化的概念是什么
  • 网站开发公司怎么选择成都解封公告
  • 慈溪网站制作中国招投标采购网官网
  • 网页不能运行wordpress优化wordpress访问速度
  • 实施网站推广的最终目的wordpress 需要zend
  • 商务网站建设心得体会免费咨询保险律师
  • ps做设计想接私活在什么网站织梦搬家 网站空白