2020-07-02 错题总结
1.JS的hoisting机制
参数是引用参数
var foo = {n:1}; //定义全局变量
(function(foo) {
console.log(foo.n); //打印全局变量的值
foo.n = 3; // 修改全局变量为3
var foo = {n:2}; //定义局部变量
console.log(foo.n); // 打印局部变量
})(foo); //iife 执行时,传参foo = {n:1}
console.log(foo.n); //打印全局变量,此时 为 3
参数是传值参数
var foo = 1;
(function(foo) {
console.log(foo); // 1
foo = 3;
var foo = 2;
console.log(foo); // 2
})(foo); //iife执行时传入foo = 1
console.log(foo); // 1
2.关于iife
1. iife的作用1: 循环中定时输出数据项
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},1000);
}
结果是: 5 5 5 5 5 ,原因是js是单线程的,这里是异步编程
for(var i=0;i<5;i++){
(function(i){
setTimeout(function(){
console.log(i);
},1000);
})(i)
}
结果是: 0 1 2 3 4 , 原因是iife
2. iife作用2: 类似于jquery/node的模块或插件开发中
(function($){
//代码
})(jQuery)
3.符合es6规范
1. let x = 10
2. const pi = 3.1415926
3. let s = Symbol(); // 内部没有构造器,不能适用new来创建
4. Object.assign(target, src1, src2); //方法用于对象的合并,将源的所有可枚举属性全部复制到target
const target = {a:1}, src1 = {b:2}, src2 = {c:3};
Object.assign(target, src1, src2);
target // {a:1, b:2, c:3}
5. Generator函数
是一个普通函数,特征 function关键字与函数之间有一个星号,函数体内部为yield表达式,定义不同的内部状态
function *helloWorldGenerator() {
yield 'hello';
yield 'world';
yield 'ending';
}
var hw = helloWorldGenerator();
6. export var firstName = "nicholas";
4.xml与html
1. xml不是html的代替
2. xml和html为不同目的而设计
3. xml被设计为传输和存储数据,焦点是数据的内容
4. html被设计为显示数据,焦点是数据的外观
xml 可扩展标记语言,xml标签没有被预定义,需要自行定义标签,被设计为具有自我描述性,是W3C的推荐标准。
5.JQuery获取元素
1. siblings() 返回被选元素的所有同胞元素
$("h2").siblings();
2. next() 返回被选元素的下一个同胞元素
$("h2").next();
3. find() 获取被选元素的后代元素,直至最后一个后代元素
$("div").find();
4. eq() 返回第几个同胞元素
6.正则表达式
确定11位电话号码
var filt = /^1[0-9]{10}$/;
filt.exec(str);
7.不支持冒泡事件
focus
mouseenter
mouseleave
load // 加载时
unload
blur // 失去焦点
resize // 浏览器窗口大小发生变化
abort // 音视频终止加载
error // 加载失败
8.js全局函数
1. decodeURL() 解码URL
2. decodeURLComponent() 解码URL的组件
3. encodeURL() 字符串编码URL
4. escape() 对字符串编码
5. eval() 计算js字符串,将它作为脚本来执行
6. isFinite() 检查值是否为 有穷大数
7. isNaN() 判断是否为数字
8. Number() 转化为数字
9. parseInt()
10. parseFloat()
11. String() 转化为字符串
12. unescape() 解码由escape() 编码的字符串
9.typeof
var f = function g() { return 23; };
typeof f; // function
typeof f(); // number
typeof g; // undefined
typeof g(); // referenceerror g is not defined
var a = 10;
function a () {};
typeof a; // number
解析: 函数提升优先于变量提升,所以以上代码相当于: function a () {} var a; a = 10; typeof a; //"number"