zoukankan      html  css  js  c++  java
  • 《javascript高性能程序设计》知识点小结

    1.javascript 包括三部分:ECMAScript、DOM、BOM;
    ECMAScript规定了这么语言的下列组成部分:语法、类型、语句、关键字、保留字、操作符、对象;
    DOM,是针对XML但是经过扩展用于HTML的应用程序接口(API),DOM把整个页面映射成一个多层节点结构
    BOM,可以访问和操作浏览器窗口的浏览器对象模型。包括的内容有:处理浏览器窗口和框架、弹出新浏览窗口、移动、缩放和关闭浏览器窗口、提供浏览器详细信息的navigator对象、提供浏览器所加载页面的详细信息的location对象、提供用户显示器分辨率详细信息的screen对象、对cookies的支持、像XMLHttpRequest和IE的ActiveXObject这样的自定义对象。

    2.javascript文件为什么需要放在<body>元素中页面的内容后面?
    因为加入放在<head>中,必须等全部javascript代码被下载、解析和执行完成以后才开始呈现页面

    3.嵌入外部文件的好处?   可维护性、可缓存(假如两个页面都使用了同一个js文件,那么只需要下载一次就可以了,因为浏览器可以根据具体的设置缓存连接的所有外部js文件)、使用未来。

    4.null与undefined的区别:无论在任何情况下均没有必要把变量设置为undefined,但是对null则不合适。话句话说只要意在保存对象的变量还没有真正保存对象,

    就应该明确地让该变量保存为null。

    5. js文件不介意传递来多少个参数,也不在意进来的参数是什么数据类型,因为js中的参数在内部是用一个数组来表示的,函数接受到的始终是这个数组,而不关心数组中

    包含哪些参数

    6.js变量包括基本类型值、引用类型值,其中引用类型值不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用

    而不是实际的对象,引类型的值是按引用访问的。对于引用类型的值可以为其添加属性和方法,而基本类型值却不可以。

    7.js函数的参数传递都是按值传递进行的

    8.js没有块级作用域

    9.js具有自动垃圾收集机制,也就是说执行环境会负责管理代码执行过程中使用的内存。方式有垃圾清除和引用计数,垃圾清除:当变量进入环境时,就将变量标记为“进入环境”,,当变量离开环境时,则将其标记为“离开环境”;引用计数:跟踪记录每个值被引用的次数。

    10.解除一个值的引用并不意味着自动回收该值所占的内存,真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。

    11.js的数组是可以随着数据的添加自动增长以容纳新增数据。

    12.Array.sort()比较的是字符串,例如 var a = [1,2,5,35]; a.sort();结果为1,2,35,5。

    如果需要比较数值大小,可以写一个函数 function compare(value1,value2){ if(value1>value2) return 1;.....} a.sort(compare);即可达到1,2,5,35。

    13.Array.splice(a,b,c..)可是实现删除、插入、替换数组中的数据。a表示其实位置,b表示删除个数,c表示添加的数据项。

    14.正则表达式字面量始终会共享共一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新的实例。

    正则表达式元字符含义:
    a)、{n} :表示匹配确定的n次; b)、{n,}:表示匹配的至少n次; c)、{n,m}:表示匹配的至少n次,至多m次;
    d)、^:匹配输入字符串的开始位置; e)、$:表示匹配输入字符串的结束位置; f)*、表示匹配前面的字符或子表达式0次或者多次;
    g)、+:表示匹配前面的字符串1次或者多次 h)、?:表示匹配前面的字符或子表达式0次或1次;
    i)、(*、+、?、{n})?后面,表示匹配搜索到的、尽可能短的字符串; j)、.:匹配除“/n”之外的任何单个字符;
    k)、x|y:匹配x或者y;  l)、[xyz]:匹配其中的任意一个字符;          m)、[a-z]:匹配制定范围内的任意字符。

    15.function其实是一种类型,每个函数都是function类型的实例,而且都与其他引用类型一样具有属性和方法。函数是对象,函数名是指针。使用不带圆括号的

    函数名是访问函数指针,而非调用函数。

    16.函数声明和函数表达式的区别:解析的顺序是不一样,解析器会率先读取函数声明,并使其在执行任何代码之前可以,至于函数表达式,则必须等到解析器执行到其所在的

    代码行,才会真正被解释执行。

    17.函数appllay()、call()方法都是在特定的作用域中调用函数,仅在于接受参数的方式不同。使用这两个方法的最大好处是对象不需要与方法有任何耦合关系。

    18.引用类型和基本包装类型的区别:就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前一直保存在内存中;

    而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。

    19.Global对象:在某种意义上是作为一个终极的“兜底对象”来定义的,换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法。

    ECMAScript虽没有明确指出如何访问Global对象,但是WEB浏览器都是将这个全局对象作为window对象的一部分加以实现的。因此在全局作用域中没有声明的对象和函数,
    就将成为window对象的属性。

    20.构造函数跟普通函数没有区别,用New后跟的就是构造函数,没有用则就是普通函数。

  • 相关阅读:
    Jocke的IOT之路--raspberrypi更换国内镜像
    利用PostMan 模拟上传/下载文件
    Java中的Lambda表达式
    设计模式之Jdk动态代理
    设计模式之代理模式
    Java内存模型及Java关键字 volatile的作用和使用说明
    JVM GC-----4、finalize()方法
    JVM GC-----3、垃圾对象的标记思路(二)
    JVM GC-----2、垃圾对象的标记思路(一)
    JVM GC-----1、垃圾回收算法
  • 原文地址:https://www.cnblogs.com/shamoguying1140/p/2776755.html
Copyright © 2011-2022 走看看