1. js中作用域和作用域链的理解。https://blog.csdn.net/lidatgb/article/details/7621744这个博文写的非常棒棒。还解释了闭包。
变量的作用域:局部变量, 全局变量(成员变量), 隐式全局变量(知道就行,不要用)
局部变量:存储函数内定义的变量(用var),函数形参,外部不可使用,函数执行完毕后会被销毁。
全局变量(成员变量):①函数外部定义的变量,所用地方都可以使用。 ②函数内不用var定义的变量,函数不执行,该变量不可用。
隐式全局变量:① var a = b = c = 1 ; b和c都是隐式全局变量。② var a=1; b=2; c=3; b和c都是隐式全局变量。(分号其实就相当于换行,和全局变量中的第②个等效了)如果是 var a=1,b=2,c=3;这些都是局部变量,分号和逗号的意义不同。
2. 变量声明提升:只提升变量名,不提升变量值(JS预解析关键一步)-----
等价于
面试的时候经常会考到:变量声明提升+就近原则
牛客题目:JavaScript无块级作用域,在全局作用域中声明变量a为window的属性;! 优先级大于in,if条件不成立,故没有赋值。
JS解析器(预解析)作用:
1. 检查语法错误
2. 变量声明提升,只提升变量名,不提升变量值
3. 把内容加载到内存中(简单数据类型加载到栈中,复杂数据类型加载到堆中)
3. AngularJS https://www.cnblogs.com/wq1994/p/7571601.html初学者博客
AngularJS 是一个 JavaScript 框架。它可通过 <script> 标签添加到 HTML 页面。
AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。
4. open ()----牛客大神的指导
Ajax技术核心就是XMLHttpRequest对象。Ajax技术的工作原理:可以分成3步
1.创建Ajax对象:var xhr = new XMLHttpRequest();
2.xhr 发送请求:xhr.open('get','test.html','true');
xhr.send();
3.xhr获取响应: xhr.onreadystatechange = function(){
if(xhr.readystate == 4){//请求的状态码
/* 0: 请求还没有建立(open执行前)
1:请求建立了还没发送(执行了open)
2:请求正式发送(执行了send)
3:请求已受理,有部分数据可以用,但还没有处理完成
4:请求完全处理完成
*/
alert(xhr.responseText);//返回的数据
}
}
可以看到,send()前是open()