这个时候, 使用 !getQueryVariable('platform') 判断, 无论怎样都是走else里,因为取反的是 字符串 , 字符串取反肯定是false,只有空字符串取反才是true。
修改成:
!JSON.parse(getQueryVariable('platform')) 或者 !!getQueryVariable('platform')
打印出:
所以以后再判断的时候,可以用typeOf去看看是什么类型
对象obj中取值
const obj = { a:1, b:2, c:3, d:4, e:5, } //用ES6的解构赋值来取值 const {a,b,c,d,e} = obj; const f = a + d; const {a:a1} = obj; console.log(a1);// 1
合并数据
const a = [1,2,3]; const b = [1,5,6]; const c = a.concat(b);//[1,2,3,1,5,6] const obj1 = { a:1, } const obj2 = { b:1, } const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}
if中判断条件
if( type == 1 || type == 2 || type == 3 || type == 4 || ){ //... } // ES6中数组实例方法includes const condition = [1,2,3,4]; if( condition.includes(type) ){ //... }
列表搜索
// find方法中找到符合条件的项,就不会继续遍历数组 性能好 const a = [1,2,3,4,5]; const result = a.find( item => item === 3)
获取对象属性值
可选链操作符
const name = obj && obj.name; // 改进 可选链操作符 ?. const name = obj?.name; obj ={ username:"花花", data:{ age:18, height:170, weight:90, unit:{ weight:"kg", height:"cm", data:{ a:"最深层级参数1", b:"最深层级参数2" } } } } //可选链 console.log("可选链:"+ obj.data?.unit?.data?.a)
添加对象属性
let obj = {}; let index = 1; obj[`topic${index}`] = '话题内容';
输入框非空的判断
if(value !== null && value !== undefined && value !== ''){ //... } // ES6中新出的空值合并运算符 // 空值合并运算符 ?? 当左侧操作数为 null 或 undefined 时,其返回右侧的操作数。否则返回左侧的操作数。 if(value ?? '' !== ''){ //... }
会引起元素位置变化的就会reflow(回流),如,窗口大小改变、字体大小改变、以及元素位置改变,都会引起周围的元素改变他们以前的位置;
不会引起位置变化的,只是在以前的位置进行改变背景颜色等,只会repaint(重绘)
回流必将引起重绘,重绘不一定会引起回流。
回流比重绘的代价要更高
JS加法精度问题
function add_sum(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length; } catch (e) { r1 = 0; } try { r2 = arg2.toString().split(".")[1].length; } catch (e) { r2 = 0; } m = Math.pow(10, Math.max(r1, r2)); return (arg1 * m + arg2 * m) / m; }