<>小结

作者: McRay | 来源:发表于2017-02-01 15:38 被阅读0次

    第一章 JavaScript的简介

    第二章 在HTML中使用JavaScript


    把JavaScript插入到HTML页面中要使用<script>元素。使用这个元素可以把JavaScript嵌入到HTML页面中,让脚本与标记混合在一起;也可以包含外部的JavaScript文件。而我们需要注意的地方有:

    • 在包含外部JavaScript文件时,必须将src属性设置为指向相应文件的URL。而这个文件既可以是与包含它的页面位于同一个服务器上的文件,也可以是其他域中的文件。
    • 所有<script>元素都会按照它们在页面中出现的先后顺序依次被解析。在不适用defer和async属性的情况下,只有在解析完前面的<script>元素中的代码之后,才会开始解析后面<script>元素中的代码。
    • 由于浏览器会先解析完不适用defer属性的<script>元素中的代码,然后再解析后面的内容,所以一般把<script>元素放在页面最后。
    • 使用defer属性可以让脚本在文档完全呈现出来之后再执行。延迟脚本总是按照指定它们的顺序执行。
    • 使用async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚本按照它们在页面中出现的顺序执行。
    • 使用<noscript>元素可以指定在不支持脚本的浏览器中显示的替代内容。但在启动脚本的情况下,浏览器不会显示<noscript>元素中的任何内容。

    第三章 基本概念

    3.1 语法
    语法.png
    3.3 变量

    ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。定义变量使要使用var操作符。因此可以修改变量值的同时修改值得类型
    例如:

    var message = "hi";
    message = 100; //有效,但不推荐
    

    有一点必须注意,即用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

    3.4 数据类型
    数据类型.png
    3.5 操作符
    操作符.png
    3.6 语句
    3.6.1 if语句
    3.6.2 do-while语句
    3.6.3 while语句
    3.6.4 for语句
    3.6.5 for-in语句
    • for-in语句是一种精准的迭代语句,可以用来枚举对象的属性。
    • 通过for-in循环输出的属性名的顺序是不可预测的。建议在使用for-in循环之前,先检测确认该对象的值不是null或undefined。

    3.6.6 label语句
    3.6.7 break和continue语句
    3.6.8 with语句
    • 作用是将代码的作用域设置到一个特定的对象中,简化多次编写同一个对象的工作。
    • 严格模式下不允许使用with语句

    3.6.9 switch语句
    3.7 函数
    • ECMAScript中没有函数签名的概念,因为其函数参数是以一个包含零或多个值的数组的形式传递的。
    • 可以向ECMAScript函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数。
    • 由于不存在函数签名的特性,ECMAScript函数不能重载。

    第四章 变量、作用域和内存问题

    4.1 基本类型和引用类型的值
    • 动态的属性:只能给引用类型值动态地添加属性,以便将来使用。
    • 复制变量值:基本类型值和引用类型值得区别。
    • 参数的传递:ECMAScript中所有函数的参数都是按值传递的。
    • 检测类型:用typeof检测对象只会返回"object",所以提供了instanceof操作符,其语法如下:

    result = variable instanceof constructor

    如果引用类型是Object,返回true;

    4.2 执行环境以及作用域
    执行.jpg
    var color = "blue";
    function changeColor() {
    var anotherColor = "red";
        function swapColors() {
            var tempColor = anotherColor;
            anotherColor = color;
            color = tempColor;
    }
    swapColors();
    }
    changeColor();
    

    这个例子的作用域链为

    QQ图片20170124110547.jpg
    • 可以通过try-catch语句的catch块 和 with语句来延长作用域链
    • javascript没有块级作用域,对于块级作用域的语言来说,for语句初始化变量的表达式所定义的变量,只会存在于循环的环境之中。而对于javascript来说,由for语句创建的变量i即使在for循环执行结束后,也依旧会存在于循环外部的执行环境。
    4.3 垃圾收集
    4.3.1 标记清除
    4.3.2 引用计数
    4.3.3 性能问题
    4.3.4 管理内存

    相关文章

      网友评论

          本文标题:<>小结

          本文链接:https://www.haomeiwen.com/subject/yiswbttx.html