一般这些小技巧都是经常用的,就算你不经常用也要知道,为什么呢,还不是你要看别人的代码呢,总不能看一行百度一下,关键时刻百度可是没啥用的。

1.数字字符串快速转换数字

var a = "3";
console.log(a * 1); // 3
console.log(+a);   // 3 这个方法最长用
console.log(a.valueOf()); // 3

有的时候后台来的字符串,你在前端函数swich已经写好了,都是数字。。。尴尬了。。这个时候只要这样就解决了

switch (+data.value){
}

2.Boolean函数判断其是true还是false

Boolean(x) // 就这么用,会返回true或者false

实现某功能:挑出数组中的所有真值

// 下边功能实现是跳出数组里所有true值
function compact(arr) {return arr.filter(Boolean)
}
var num = [0, 1, false, 2, "", "a", "n"];
console.log(compact(num))
// Boolean 是一个函数 Boolean(1)会返回true,Boolean(“”)会返回false
// 在filter里会自己传参.
// 上方filter函数是简写的,不简写是这个样子的
function compact(arr) {return arr.filter(function(item){return Boolean(item)})
}

3.短路运算符的妙用

看一下下边这段代码,会有一种豁然开朗的感觉

typeof config.btn === 'string' && (config.btn = [config.btn]);

前边是一个检测类型,没有if也不判断。后边就是个执行语句;

关键点就在于这个&&

&&为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执行,否则返回最后一个真值
||为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,否则返回最后一个假值

再回到代码上,就是当前边的检测类型函数为真时,就会继续执行。也就是config.btn如果是个字符串就执行后边这个,把config.btn变成数组,不过不是字符串的话后边的就不执行了。代码的意思就很明显了,不管你传来了字符串还是数组最后都变数组,我后边好做处理,就不用if else去判断了,可以说非常高效了。

另一个应用就是默认参数,和防止参数不传;应用某变量又担心他没被赋值。

譬如:

function sendClass (val){var data=val || "默认";
// 如果val有值就不用默认。没有传就用默认
}
// 防止undefined
var data=people || [];

4. 利用 | 0 取整 和& 1判断奇数偶数

// 利用 | 0 取整
var dd = -3.52;
console.log(dd | 0)
// 判断奇数偶数
var numA = 8;
console.log(!!(numA & 1))

5.强制给函数传参数,否则抛出错误

// 强制参数 ;否则就抛出错误
var man = () => {throw new Error ('少参数了傻屌!');
}
var too = (bar = man()) => {// 这里如果不传入参数,就会执行man函数报出错误}
too("aaaa") //有参数不报错
too()//报错
// ES6里的可以在函数参数赋值默认参数,这次是赋值函数执行,
// 也可以看出这个函数的执行过程,先看看有没有参数,没有再去找默认设定了什么,就是利用这个原理

6.执行一次的函数,第二次执行不一样

遇到这样的需求,需要频繁执行某个函数,函数里有很多的swich或者if elseif,执行一次后,就会每次都走一条线而且多次走某个分支,这时候用这个方法

/*在某个场景下我们的函数中有判断语句,这个判断依据在整个项目运行期间一般不会变化,所以判断分支在整个项目运行期间只会运行某个特定分支,那么就可以考虑惰性载入函数
*/
// 利用执行一次函数后,就改写这个函数,下次来的时候就不用判断了,就直接执行,节约了资源
function todo (){if(a===b){console.log(11111111)}else{console.log(22222222)}
}
// 改写成这个样子 ,要的是这个编程思路,同样的思路也可以做执行一次的函数.也就是说执行一次就改写它
function todo (){if(a===b){todo=function(){console.log(11111111)}}else{todo=function(){console.log(22222222)}
}

要的是这个编程思路,同样的思路也可以做执行一次的函数.也就是说执行一次就改写它

7.改写掉难看的swich

平常看到的是这样子的

switch (value){case "a":fn1()break;case "b":fn2()break;case "c":fn3()break;case "d":fn4()break;
}

大家都知道一个对象要取出来可以obj.sth或者obj[sth],现在就利用后一种写法

var obj={a:fn1,b:fn2,c:fn3,d:fn4
}
obj[value]();

如果是取值那就直接obj[value]就更简单了,熟练了非常好用

今天就到这里,有不对的地方希望有人帮忙指正

JavaScript一些优雅小技巧不得不知相关推荐

  1. [转]javascript常用的小技巧

    javascript常用的小技巧 分类: javascript 2011-12-19 09:30 170人阅读 评论(1) 收藏 举报 事件源对象 event.srcElement.tagName e ...

  2. 使用JavaScript的一些小技巧

    作者:Airen https://www.w3cplus.com/javascript/javascript-tips.html 任何一门技术在实际中都会有一些属于自己的小技巧.同样的,在使用Java ...

  3. JavaScript的一些小技巧(转)

    本文是一篇翻译文章,原文信息如下: 原文:45 Useful JavaScript Tips, Tricks and Best Practices 作者:Saad Mousliki JavaScrip ...

  4. javascript常用的小技巧

    事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture();  event.srcE ...

  5. JavaScript几个小技巧

    &&.||运算的高级用法   在JavaSript中,"&&"运算符除了可以对布尔值进行与(AND)运算之外,还可以对真假值进行与(AND)运算.J ...

  6. 在ASP.NET使用javascript的一点小技巧

    我们在进行ASP.NET开发时,经常会用到一些javascript脚本,比如: private void Button1_Click(object sender, System.EventArgs e ...

  7. 在ASP.NET使用javascript的一点小技巧(转www.chinacs.net 中文C#技术站 )

    我们在进行ASP.NET开发时,经常会用到一些javascript脚本,比如: private void Button1_Click(object sender, System.EventArgs e ...

  8. JavaScript 练手小技巧:页面高亮操作提示和蒙板

    在页面上,有时候会遇到操作提示,如下图所示. 可以很直观的告诉用户,关键的操作在哪里,有什么做作用. 需要说明的是,被高亮的部分,并不是目标的真实标签,而是用的其他标签模拟的. 真实的标签被 mask ...

  9. JavaScript 练手小技巧:#RRGGBB 和 rgb(255,255,255)颜色代码相互转换

    看到有人在 CSDN 上写颜色的转换代码,突发奇想,用 JavaScript 也写一个. 一.相关知识点 (1)常用颜色代码方式,有两种 #RRGGBB 和 rgb(255,255,255) 用 #R ...

最新文章

  1. jsonStore加载远程和本地数据实例
  2. 143. Leetcode 78. 子集 (回溯算法-子集问题)
  3. 30.32.33.词云图、3D绘图、矩阵可视化、绘制混淆矩阵
  4. 小程序WXML基本使用
  5. XidianOJ 1019 自然数的秘密
  6. Extjs中renderer:function函数用法
  7. UnityShader29:模板测试
  8. PHP和javascript中url编码解码详解
  9. php公司共享 管理,php – 管理几个共享重叠函数和类的代码库
  10. 已安装 SQL Server 2005 Express 工具。若要继续,请删除 SQL Server 2005 Express 工具
  11. WordPress: 使用 wp_insert_attachment 上传附件
  12. EmmyLua ProtoBuf Api提示
  13. 阿里云服务器安全组授权对象ip设置
  14. c语言打印星号对勾,Intellij常用快捷键记录
  15. 收集的13个杀毒软件和安全防护软件(有图哦)
  16. 使用FME进行GIS与CAD转换
  17. 中海国亚Java笔试题
  18. 字符串转时间(time_t)
  19. Python基础知识点
  20. Java 按钮组件_提交按钮

热门文章

  1. U盘文件丢失了怎么办?一串英文字符即可快速帮你找回,秒学!
  2. 阿里巴巴提示:手动创建线程效果更好
  3. 设计模式-请假流程-责任链模式
  4. 安装caffe遇到/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o):relocation R_X86_64_32S against
  5. 双卡双待手机在使用移动卡的流量上网时为何另外一张联通卡没有信号?
  6. 【Linux】gcc编译器下载与手动安装
  7. 《中国通史 2016》_12_读后感
  8. Kubernetes--Pod的DNS域名和相关特性
  9. android surfaceview 背景颜色,android – 设置Surface View的背景颜色
  10. 海康威视2022届校招面经(内含内推码)