JS知识点
-
数字 加 undefined 输出 NaN
-
console.log('今天收获' + i(i为变量) + '个知识点')
-
实参的个数小于形参的个数时,多的形参定义为undefined 结果为NaN
-
1.1 我们js引擎运行js分为两步:预解析 代码执行
(1).预解析:js引擎会把js里面所有的 var 还有 function 提升到当前作用域的最前面 (2).代码执行按照代码书写的顺序从上往下执行
1.2. 预解析分为变量预解析(变量提升)和函数预解析(函数提升) (1)变量提升就是把所有的变量声明提升到当前的作用域最前面不提升赋值操作 (2)函数提升就是把所有的函数声明提升到当前作用域的最前面不调用函数 (函数表达式形式的调用必须写在函数表达式的后面)。
-
var a = b = c = 9; 相当于 var a = 9; b = 9; c = 9;
-
var a = 8, b = 8, c = 8; 相当于 var a = 8; var b = 8; var c = 8;
-
Date.getMonth() 返回的是 0--11 Date.getDay()返回的是 周一返回1 周六返回6 周日返回0
-
获取Date总的毫秒数 (时间戳)的方法(不是当前时间的毫秒数 而是距离1970年1月1日过了多少毫秒数)
1.1 通过valueOf() var date = new Date() console.log(date.valueOf()) //1603351909546
1.2 通过getTime() var date = new Date() console.log(date.getTime()) //1603351909546
1.3 简单(常用)的写法 var date = +new Date() console.log(date) //1603351909546
1.4 H5新增的属性 console.log(Date.now()) //1603351909546
-
检测是否为数组
1.1 intanceof
var arr = []; console.log(arr instanceof Array) //结果为true
1.2 Array.isArray() H5新增的方法 IE9以上才支持
var arr = []; console.log(Array.isArray(arr)) //结果为true
-
arra.sort() 可以对0-9中的数字继续升序排序 如果是10以上的数字就可以通过 `array.sort(function(a, b){ return a -b;})` //升序排序 `array.sort(function(a, b){return b -a;})` 降序排序
-
一个按钮点击一次切换为文本框,继续点击一次切换为密码框,反复多次的算法思想: 利用一个flag变量来判断flag的值,如果是1就切换为文本框,然后把flag的值设为0,如果是0就切换为密码框,然后把flag的值设为1。
-
获取属性的两种方法: (1)element.属性(src,herf,class,type等)获得内置属性值即元素本身自带的属性。 (2)element.getAttribute('属性') 主要获得自定义属性即我们程序员自定义的属性。
-
设置属性的两种方法:(1)element.属性 = ‘值’ 例如 var div = document.querySelector('div') div.className = 'navs'(2)element.setAttribute('属性', '值') 主要针对自定义属性 例如 var div = document.querySelector('div') div.setAttribute = ('class', 'walls') class特殊这里写class而不是className。
-
移除属性:removeAttribute('属性') 例如 var div = document.querySelector('div') div.removeAttribute('id')
-
H5规定自定义属性以data-开头作为属性名并赋值
-
for (var k in obj) {} 用于遍历对象,数组 f or(var i of arr){} 可以用来遍历数组,因为数组有可迭代属性(Symbol.iterator)
-
事件委托:也称事件代理,原理是给父节点添加侦听器,利用事件冒泡影响每一个子节点。 var ul = document.querySelector('ul'); ul.addEventListener('click', function(e) { e.target.style.backgroundColor = 'pink';})
-
mouseover和mouseenter都表示鼠标经过时会触发的事件,它们的区别是mouseover鼠标经过自身盒子会触发,经过子盒子也会触发(冒泡),mouseenter只会经过自身盒子触发(不会冒泡)。
-
vertical-align 只对行内元素、表格单元格元素生效:不能用它垂直对齐块级(vertical-align: middle;)元素。
-
箭头函数没有arguments方法(arguments用于获取不定参) 可以通过 let fn = (a, b,...arg) => {console.log(a,b,arg);}; //展开运算符后的arg是可以随便起符合规则的名的 fn(1, 2, 3, 4, 5); 来获取剩余参数。
-
箭头函数本身没有 this, 调用箭头函数的 this 时,指向其声明时 所在作用域的this。
-
for(let i in obj){} for in 循环不仅会把对象中的属性遍历一遍,也会把对象原型中的方法遍历出来
-
通过 Object.prototype.toString.call() 来判断数组跟对象类型 例如 let arr = [1,2] let obj = {name: "张三"} console.log(Object.prototype.toString.call(arr)) //输出 [object Array] console.log(Object.prototype.toString.call(obj)) //输出 [object Object]
-
async声明异步函数 await后面一定要接一个promise对象 属于ES7语法
-
a