ECMA Script

  • 它是一种由ECMA组织(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范
  • 而我们学的JavaScript是ECMA的实现, 但术语ECMAScript和JavaScript平时表达同一个意思
  • JS包含三个部分:
    • ECMAScript(核心)
    • 浏览器端扩展
      • DOM(文档对象模型)
      • BOM(浏览器对象模型)
    • 服务器端扩展
      • Node
  • ES的几个重要版本
    • ES5 : 09年发布
    • ES6(ES2015) : 15年发布, 也称为ECMA2015
    • ES7(ES2016) : 16年发布, 也称为ECMA2016  (变化不大)
  • 教程
    • ES5
      • http://www.zhangxinxu.com/wordpress/2012/01/introducing-ecmascript-5-1/
      • http://www.ibm.com/developerworks/cn/web/wa-ecma262/
    • ES6
      • http://es6.ruanyifeng.com/
    • ES7
      • http://www.w3ctech.com/topic/1614

ES5

ES5兼容性

  • IE8只支持defineProperty、getOwnPropertyDescriptor的部分特性和JSON的新特性
  • IE9不支持严格模式, 其它都可以
  • IE10和其他主流浏览器都支持了
  • PC端开发需要注意IE9以下的兼容, 但移动端开发时不需要

严格模式

  • 在ES5中,除了正常运行模式(混杂模式),ES5还添加了第二种运行模式:"严格模式"(strict mode),这种模式使得Javascript在更严格的语法条件下运行
  • 严格模式的作用
    • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
    • 消除代码运行的一些不安全之处,保证代码运行的安全
    • 为未来新版本的Javascript做好铺垫
  • 使用严格模式
    • 在全局或函数的第一条语句定义为: 'use strict';如果浏览器不支持, 只解析为一条简单的语句, 没有任何副作用
    • 语法和行为改变:
      • 必须用var声明变量
      • 创建eval作用域
      • 禁止this指向window
      • 对象不能有重名的属性
      • 函数不能有重名的形参
  • 教程:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
<script type="text/javascript">
    'use strict'; // 使用严格模式

    var str = 'string'; // 必须使用var来声明变量

    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    // Person(); // 禁止自定义的函数中的this指向window
    new Person('zh', 18);

    var str = '123'; 
    eval('var str = "234"; alert(str)'); // 创建eval作用域不会污染全局变量
    alert(str);

    // 对象不能有重名的属性
    var obj = {
        name: '123',
        name: '234'
    }
<script
View Code

相关文章:

  • 2021-06-29
  • 2021-06-06
  • 2022-12-23
  • 2021-05-06
  • 2021-12-17
  • 2022-01-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
  • 2022-01-30
相关资源
相似解决方案