1.连等于:var a = b =5;这句话相当于var a = 5 ; window.b = 5;
function name() {
var a = b = 5;
}
name();
console.log(a);
console.log(b);
2. 5大基本类型是如何作用或产生的(构造器new构造出来的对象),同时说明在js中万物皆对象。
var b = 5; <=等价=> var b = new Number(5); 隐式调用了Number()构造函数;
对new(构造器的解释/理解)
1)new为何会出现? 基于使得同一类型不同的对象互相独立互不影响的想法(想让结构相等甚至内容相等的对象之间能够互相独立);
2)对js中的变量出现两大阵营(基本类型 与 引用类型)的解释?
3)为什么基本类型可以互相独立(在每次赋值操作时隐式调用了new构造器进行赋值),而引用类型不行?
var bool = new Boolean(false);
解释为何 bool === false返回值为false而false === false 返回值为true;
答:主动通过new构造器进行赋值操作 与 隐式转换借助new构造器(理解为js的默认操作) 的区别;js内部的解析方式,主动通过new构造器赋值,得到的结果是一个对象,隐式转换得到的结果是基本类型(number, boolean, ...);
3. js中自动分号插入机制;
1)在return所在行的末尾加分号(有回车的情况下);
2)在前置括号中,js是不会自动加分号的;
w3c上关于js自动插入分号的说明是:
ECMAScript 则允许开发者自行决定是否以分号结束一行代码。如果没有分号,ECMAScript 就把折行代码的结尾看做该语句的结尾;前提是这样没有破坏代码的语义。
4.字面量赋值 与 构造函数赋值;
(2).toString() 与 2.toString()的区别
为什么要加括号才能成功?
{}.toString ? 报错;
字面量对象赋值:obj = {};
构造函数赋值:obj = new Object();
Object.defineProperty(obj, 'b', {value:8});
obj.hasOwnProperty('b');
5.javascript从java中借鉴了代码块的概念。用"{}"括号来表示,代码块表示一系列应该按顺序执行的语句,它们被封装在"{}"花括号当中。
6.事件监听器addEventListener的用法
参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener