1、ECMAScript中,字符串并非以对象的形式来表示,即并非是引用类型。

2、存储:栈、堆?

  源代码、程序运行时的数据是如何存储的?程序的运行过程详解。

3、变量前没有加var声明,是全局变量,但函数的参数变量前不管有没有加var,都是函数的局部变量?

  每个函数都有一个属于自己的arguments数组?

4、typeof只是一个操作符:typeof 1 和 typeof(1) 都是合法的;

  instanceof 也是一个操作符。

5、var o = null;o instanceof Object,结果为false?

  var o = null;typeof o,结果为"object"

  null并非Object的实例?Null是基本数据类型

  在Java中,Object为基类,然后才有实例的概念,实例也就是对象;但在js中,并没有类的概念,Object本身就是对象,此时该如何区分对象和实例?

6、正则表达式?
7、[[Call]]方法?

8、Chrome F12 详解?

9、function sum(n1,n2){return n1 + n2;}:

  typeof sum:"function"

  typeof sum():"number"
  sum():NaN
  sum instanceof Object:true

10、Undefined、Null也是基本数据类型,且各有一个唯一值undefined、null,注意区分大小写。

11、执行环境及作用域:

  执行环境:

    定义了变量或函数有权访问的其他数据,决定了它们各自的行为;

    这里的环境不是一个空间概念,是指程序中的环境(上下文):

      对于进程而言,具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存(堆栈)信息等。

    由外到内,有多个执行环境(树状/父子/包含):

      最外围的环境是全局执行环境,在web浏览器中就是window对象;

      每个函数都有自己的执行环境;

      ECMAScript程序中的执行流由环境栈机制控制着;执行流概念?

  变量对象:

    每个执行环境都有一个与之关联的变量对象;

    环境中定义的所有变量函数都保存在这个对象中;

    变量对象可以表示执行环境;

    当代码在一个环境中执行时,会创建变量对象的一个作用域链:

      保证对 (执行环境有权访问的所有) 变量和函数的有序访问;

      作用域链的前端,始终都是当前执行的代码所在环境的变量对象;

      而标识符解析是沿着作用域链,从其前端开始,逐级地向后回溯

  总结速记:

    执行环境分为全局和局部,局部就是函数的执行环境;

    变量对象包含变量和函数,作用域链是逐级回溯搜索;

    注意:

      执行环境与变量对象一一对应,是静态的;

      而变量对象的作用域链的前端是可以变化的,取决于当前执行的代码所在的环境,是动态的?

12、延长作用域链:

function buildUrl() {  //现调用函数,作用域链的前端增加buildUrl()函数的执行环境对应的变量对象,记为A

  var qs = "?debug=true";  //变量qs属于A

  with(location){  /*现执行with语句,首先系统为location对象变量分配一个变量对象,记为B,用于包含location对象的所有属性和方法;

             然后作用域链的前端再增加B;

             注意此时B的执行环境与A的相同,即是buildUrl()函数的执行环境?*/

    var url = href + qs;  //这里定义的url变量仍然是在buildUrl()函数的执行环境中

  }

  return url;

}

  总结:

    示例中,作用域链的前端增加一个变量对象,但是前端的执行环境没有发生改变?

    在with语句块外可以访问块中定义的变量;

    在catch块的外部不可以访问到错误对象?

13、url详解

14、with语句 当前对象?

15、触发垃圾收集的变量分配、字面量和(或)数组元素的临界值被调整为动态修正?:

  低于15%(注意这里的百分比应当是占已分配的内存):说明每个回收周期中有很多变量没有被回收,实际上是被占用,所以把临界值提高,增大垃圾回收的周期,减少垃圾回收的次数,提高性能。

16、如果网页中包含多个框架,就会存在两个以上不同的全局执行环境?

17、Object与Array是属于同级的吗?

  答案是否定的;

  

  对象是引用类型的一个实例

  Array是Object的实例,arr是Array的实例;

  Array既是引用类型,也是对象/实例?

18、arr.sort(compare)底层实现?类比迭代的实现

19、GMT、UTC、PST时间格式详解?:

  alert(new Date()); 结果为:Mon Jan 08 2018 17:38:12 GMT+0800 (中国标准时间),显示的是北京时区;

 

  alert(new Date(Date.parse("2018-05-01T02:30:30"))); 结果为:Tue May 01 2018 02:30:30 GMT+0800 (中国标准时间),基于本地时区;
  alert(new Date("2018-05-01T02:30:30")); 结果为:Tue May 01 2018 02:30:30 GMT+0800 (中国标准时间),基于本地时区?;


  alert(new Date(Date.UTC(2018,4,1,2,30,30))); 结果为:Tue May 01 2018 10:30:30 GMT+0800 (中国标准时间),基于GMT;
  alert(new Date(2018,4,1,2,30,30)); 结果为:Tue May 01 2018 02:30:30 GMT+0800 (中国标准时间),此时日期和时间都基于本地时区而非GMT来创建?

20、一元加法操作符作用于对象,效果等同于Number(对象):会先调用对象的valueOf()方法,若结果为NaN,则再调用对象的toString()方法。