1.== 运算符(两个操作数类型不相同时)
如果一个值是null,另一个值是undefined ,则他们相等;
如果一个值是数字,另一个值是字符串,现将字符串转换为数字,然后使用转换后的值进行比较;
如果其中一个值是true,则将其转化为1再比较.如果其中一个值是false,则转换为0 再比较;
如果一个值是对象,另一个值是对象或者字符串,则将对象转换为原始值,在进行比较;
2.跨域访问,主要解决是浏览器的同源策略;同源策略要求协议,域名,端口都必须相同;
3.jsonp是json的一种使用模式,解决主流浏览器的跨域数据访问的问题;jsonp只能进行get请求;
4.普通的函数声明: function ff(){}
构造函数声明 : var foo = new Function ();
函数字面量声明: var foo = function (x) { alert(x ) };
5.变量声明:
在全局作用域中声明的变量,函数会变成window对象的属性和方法
使用var声明的全局变量不可删除
省略var声明的全局变量可删除
(2):声明提升:
console.log(bb); // undefined
var bb = 11;
(3): 重复变量的声明
使用var语句重复声明语句是合法且无害的,js会忽略同一变量的后续声明
(4):js无块级作用域,在全局作用域中声明变量a为window属性
6.require查找模块的顺序
首先加载核心模块,不管有没有同名/同目录的情况下,核心模块优先加载;
其次按照相对路径/绝对路径加载文件模块(加载顺序,首先试图按照
查找.js扩展名的文件,如果没有,试图按照路径查找.json扩展名的文件,
如果还没有,就按照路径查找.node扩展名的)
7.隐式转换:
[] == false --> [].valueOf() == false --> [].toString() == false --> '' == false --> true
{} == false --> {}.valueOf() == false --> {}.toString() == false --> '[object object ]' == false
--> false;
8: import语句
用于从外部模块,其他脚本中导入函数,对象或者原型,这些被导入的模型必须在其他的模块或者脚本中被导出,而非导入文件;
import 是 css的外链链接方式
9.es6的基本数据类型:
Number String Null Undefined Symbol Boolean
用typeof 可以检测出变量的基本数据类型,
但是有个特例,null的typeof返回的是object,是js的最大BUG
10.Symbol是es6 新增的,: 表示独一无二的值
注意,Symbol函数前不能使用new 命令,否则会报错,因为生成symbol是一个原始类型的值,不是对象;
symbol函数可以接受一个字符串作为参数,表示symbol实例的描述,
主要为了在控制台显示,或转为字符串时候,比较容易区分;
symbol值不能跟其他类型的值运算,symbol值作为对象属性名时,不能用点运算符;