大杂烩: 踩坑记录

简介: 大杂烩: 踩坑记录

image.pngimage.png

                                              这个时候, 使用 !getQueryVariable('platform') 判断, 无论怎样都是走else里,因为取反的是 字符串 , 字符串取反肯定是false,只有空字符串取反才是true。

修改成:


!JSON.parse(getQueryVariable('platform')) 或者 !!getQueryVariable('platform')

image.png

打印出:


image.png

所以以后再判断的时候,可以用typeOf去看看是什么类型

image.png

对象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(重绘)

回流必将引起重绘,重绘不一定会引起回流。

回流比重绘的代价要更高

image.png

JS加法精度问题

image.png

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;
}
相关文章
|
8月前
|
缓存 分布式计算 算法
码农死磕这份Java高级开发文档,成功'挤'进一线大厂,这也太强了吧
拿到一份offer比什么都重要,所以笔者专门花了近一个月的时间整理好了一份专门为Java面试而生的总结,注意的是笔者仅仅对面试技术方面的题目进行的总结,至于如何去和面试官去聊,怎么聊,聊得嗨,这里笔者就不谈了,因为这方面并不是笔者擅长的。
|
2月前
|
Java 编译器 程序员
小心踩坑!s1 = s1 + 1 和 s1 += 1 的区别你真的懂吗?
小米,一位29岁的技术爱好者,通过一个Java面试题解析了隐式类型转换与赋值运算符特性的知识点。题目涉及`short s1 = 1; s1 = s1 + 1;`与`short s1 = 1; s1 += 1;`的区别,前者因类型不匹配报错,后者则因`+=`运算符的隐式类型转换功能而成功编译。小米通过故事化讲解,深入浅出地解释了Java中数据类型转换的规则及其背后的逻辑,帮助读者更好地理解和记忆这一知识点。
29 3
|
7月前
|
算法 Java API
记录我第一次在Android开发图像处理算法的经历
记录我第一次在Android开发图像处理算法的经历
45 1
|
8月前
|
JavaScript API
【源码共读】组件太多,重复工作量大?这次一行命令带你解放双手!
【源码共读】组件太多,重复工作量大?这次一行命令带你解放双手!
77 0
|
Java 应用服务中间件 Android开发
开发踩坑记录之四:Tomcat内存溢出问题分析
系统平台运行一段时间后,平台出现无法访问的问题,重启对应的服务后平台恢复正常。查看日志发现在凌晨两点零四分之后没有对应的日志输出,直到重启服务后才有日志的正常输出。同时发现在Tomcat的目录下存在hprof文件,即java进程的内存镜像文件。初步猜测Tomcat发生了内存溢出导致服务出现假死现象,即在任务管理器中虽然为运行状态,但是实际已不能正常对外提供服务。   对于hprof文件的分析需要借助于内存分析工具Eclipse Memory Analyzer,通过它寻找到平台发生内存泄露的根源,再根据发生内存泄露的地方以及相关的日志信息定位什么样的业务场景下导致该异常情况的发生。
开发踩坑记录之四:Tomcat内存溢出问题分析
|
存储 供应链 安全
Java开发的五条安全小贴士,助你的项目更安全
Java开发的五条安全小贴士,助你的项目更安全
|
移动开发 前端开发 小程序
不愧是前端老油条,分分钟看出我方案的bug
国庆前刚开发完一个小需求,常规性的做了一次code review,不过这次review有所不同,我们组前端老油条竟然参会了,平时发会邀都不来的。 不过不愧是老油条,竟然分分中发现了问题,老油条的地位又在我们小前端的心里巩固了一下。 和往常一样,review前先过一遍技术方案,一让大家快速的了解需求,二来分析下技术方案是否存在问题,是否合理,一般情况下,技术方案没问题,后面的代码review感觉就没啥必要了,因为很少有人听。
142 0
不愧是前端老油条,分分钟看出我方案的bug
|
开发框架 Java 测试技术
【测试基础】五、这样提bug单,开发小哥还会怼你么?
【测试基础】五、这样提bug单,开发小哥还会怼你么?
【测试基础】五、这样提bug单,开发小哥还会怼你么?
|
缓存 Java 测试技术
CURD系统怎么做出技术含量--怎样引导面试
CURD系统怎么做出技术含量--怎样引导面试
CURD系统怎么做出技术含量--怎样引导面试
|
存储 编解码 自然语言处理
每次阅读外文技术资料都头疼,终于知道原因了。
每次阅读外文技术资料都头疼,终于知道原因了。
每次阅读外文技术资料都头疼,终于知道原因了。

热门文章

最新文章