高程三(1):简介、使用、严格模式

一、简介
1、历史
1995年,javascript诞生。
1997年,1.1版本提交到ECMA协会,ECMAScript作为JS新脚本语言的标准。
 
2、Web浏览器下的实现——包括:ECMAScript、DOM、BOM
    ECMAScript:语言核心,语言标准;规定了这门语言的组成:语法、类型、语句、关键字、保留字、操作符、对象。ECMA协会制定标准,基本上没有兼容性问题。
    包括的版本:ES1、ES2、ES3、ES4(由于太超前的标准被弃用)、ES5(现在常用的版本)、ES6(最新的语言标准,越来越像后端语言)
    DOM:文档对象模型,与页面进行交互;借助DOM提供的API来控制页面元素、节点的增删改查;实现鼠标与页面事件、以及对CSS的支持等。DOM版本:DOM1、DOM2、DOM3。W3C组织制定标准。有一小部分兼容性问题。
    BOM:浏览器对象模型,支持可以访问和操作浏览器;提供了关于:弹出窗口;移动、缩放、关闭窗口;navigator对象;location当前加载页面相关信息;screen显示分辨率对象;对cookies的支持;XMLHttpRequest和ActiveXObject对象等。由浏览器厂商自行实现,兼容性问题很多。
 
二、在HTML中使用Javascript
1、<script>标签,属性有:
    async:立即加载这个脚本,但不妨碍下载其他资源或等待加载其他脚本。
    charset:忽略。
    defer:脚本延迟到文档被解析和显示后执行。最好最多写一个,否则执行顺序无法保证。
    language:已废弃。
    src:要加载资源。
    type:表示代码使用的内容类型MIME;默认 text/javascript,所以可以不写。
    PS:如果代码中有需要引用的脚本时,需要使用转义符
       $(xx).append("<script src='xxx'><\/script>");
 
2、script标签位置:最好放在页面最后面。
    好处:1)、更快的显示页面;2)、当脚本报错时,不会影响页面的显示。
    js脚本通过外部引入的好处:
        1)、可维护性,脚本与页面分离,方便维护且不显凌乱。
        2)、可缓存,如果有多个页面使用同一个js,在浏览器访问时,只会下载一次。
        3)、可共用性好,方便脚本资源共享。
 
3、文档模式:混杂模式、标准模式
    标准模式是理想的浏览器模式;混杂模式是对之前老版网站所做的兼容处理模式。
    
 
4、<noscript>标签
    1)在某些浏览器不支持Js;2)在浏览器被关闭执行js的时候,显示该标签的提示内容,对用户更友好。
 
三、基本概念
1、语法
1.1、区分大小写,typeof关键字不能做标识符,但typeOf就可以。
1.2、标识符:包括 变量名、函数名、属性名、函数参数,规范:
    1)字母、下划线(_)、美元符号$、数字
    2)在上面1)的基础上,第一个字符不能是数字。
    3)不能是ECMAScript的关键字。
1.3、注释
    // 单行注释
    /* 
        多行注释 
    */
1.4、语句。
    1)结束语句用 ; 分号,最好都使用。以免压缩js时出现问题。
    2)控制语句,都用花括号,更规范。
1.5、严格模式
    写法:要在作用域的顶部添加  'use strict';  如<script>最上面;如函数最上面;写在中间无效。
    目的:1)消除js语法的不合理、不严谨之处,减少怪异行为。2)保障代码运行安全。3)提高编译器效率,增加运行速度。
    严格模式跟正常模式写法不同点,总结如下:
    1)变量不能没有定义。
    2)禁止使用 with 语句。
    3)eval执行后作用域控制在eval内部,阻止内部作用域流出到外部,如eval("var x = 5")
    4)禁止this关键字指向全局对象window
    5)禁止在函数内部调用函数自己(会报错)
    6)禁止删除变量。delete 可以删除对象上的属性,不能删除变量,严格模式下删除会报错。
    7)对只读属性强行赋值时,严格模式下会报错。
    8)严格模式下,删除一个不可删除的属性时,会报错。如,delete Object.prototype,正常模式也无法删除,但是不报错。严格模式下会报错。
    9)定义的对象里,不能有相同名的属性。正常模式下,后面的属性会覆盖前面,但严格模式下属于语法错误。
    10)函数不能有重名的参数,严格模式下属于语法错误,报错。
    11)禁止八进制表示法,'use strict';  var xx = 0100;  //语法错误
    12)arguments不再追踪参数的变化,且跟所传的形参不是同一个东西。
    13)不允许在非函数(如if、for)的代码块内声明函数。严格模式下会有语法错误。
    14)关键字、保留字使用这些作为参数名、变量名 在严格模式下会报错。
 
 
posted @ 2016-09-02 13:05  搜易贷  阅读(154)  评论(0编辑  收藏  举报