8个Javascript小技巧,让你写的代码有腔调
如果你想确保你的JavaScript在大多数浏览器和移动设备中都可以工作,那么我从大漠等大神指导,原来可以使用f2etest,也可以使用Endtest,browserstack等
1. 使用 + 字符可以转换成数字
比如要把一个字符串数字转换成数字,你可能会这样做:
var one = ‘1’;
var two = ‘2’;
var numberOne = Number(one); //1
var numberTwo = parseInt(two); //2
我要说的这个小技巧是在John Papa那里学到的,通过 + 字符,直接实现了对变量的 数字转换。
这种方式灰常简单,但前提得是一个数字的字符串,否则就会得到NaN值。
例如下面的代码:
function convertNumber(str){
return +str;
}
convertNumber(‘1234’);
//1234
convertNumber(‘abc’);
//NaN
var one = ‘1’;
var numberOne = +one; //1
这种写法比较简单,想说为什么这样写,因为比较酷~
2 清空数组
有时候清空Array你可能会这样做
var list = [1, 2, 3, 4];
list = [ ];
但另一个方法可能会更加的高效一些:
你可以这样写:
var list = [1,2,3,4];
list.length = 0;
这样做是因为:
list = [ ] ,会将一个新数组的引用分配给变量,而其他任何引用都不受影响。这意味着对前一个数组的内容的引用仍然保留在内存中,导致内存泄漏。
list.length = 0, 则直接就删除了Array中的内容
3 合并数组
在实际操作中,经常要实现数组的合并,尤其是有时候Component化后,会需要定义许多的Module啊,Component等等,比如Angular, 可能由于项目比较大,而让不同的app声明了不同的数组。那此时可以这样做,使用Array.concat() 或者 [ ].concat()
比如
ComponentModule= [‘call-back’,’router’,’nav’]
PageModule = [‘home’,’payment’]
AppModule = [ ]. concat(ComponentModule,PageModule)
然后这个函数并不适合用来合并两个大型的数组,因为其将消耗大量的内存来存储新创建的数组。在这种情况之个,可以使用Array.pus().apply(arr1,arr2)来替代创建一个新数组。这种方法不是用来创建一个新的数组,其只是将第一个第二个数组合并在一起,同时减少内存的使用:
var array1 = [1,2,3];
var array2 = [4,5,6];
console.log(array1.push.apply(array1, array2)); // [1,2,3,4,5,6];
4 把Arguments转换成数组
这用到了ES6的特性,把Arguments的数值spread出去
function toArray(…args){
console.log(args);
}
toArray(1,2,3); //[1,2,3]
5 复制数组
同样也使用了ES6的特性
var arr=[1,2,3];
//var arr2=Array.from(arr);
var arr2=[...arr];
arr.pop();
console.log(arr); //[1,2]
console.log(arr2); //[1,2,3]
6 数字转字符串
假设有不确定的变数类型,需要转换成字符串,如果直接使用可能会有错误
var one = 1;
var two = 2;
var three = '3';
var result = one + two + three;
// 会得到 "33" 而非 "123"
可以使用 concat 来链接字符串,而避免了错误
var one = 1;
var two = 2;
var three = '3';
var result = ''.concat(one, two, three); // 得到 "123"
7在Array中找到最大值和最小值
有时候,程序员就是有尿性,非要找到最大值和最小值,内建函数有 Math.max() 和 Math.min() 可以找到最大和最小值
Math.max(1, 2, 3, 4); // 4
Math.min(1, 2, 3, 4); // 1
如果要在Array中找最大最小值可以这样用
var numbers = [1, 2, 3, 4];
Math.max.apply(null, numbers) // 4
Math.min.apply(null, numbers) // 1
通过ES6 的Spread来完成
var numbers = [1, 2, 3, 4];
Math.max(...numbers) // 4
Math.min(...numbers) // 1
8 设置默认值
也许这个小技巧,许多小伙伴在学javascript一段时间就都已经掌握了了。
如果你想必须给一个变量赋默认值,可以这样简单写
var a;
console.log(a) // undefined
a = a || ‘default value’
console.log(a) // default value
a = a || ‘new value’
console.log(a) // default value
8个Javascript小技巧,让你写的代码有腔调的更多相关文章
- 12个非常实用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 11个不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在 ES6中新增的,它类似于数组,但 ...
- [转]11个教程中不常被提及的JavaScript小技巧
原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...
- 11个教程中不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...
- 12个十分实用的JavaScript小技巧
12个非常实用的JavaScript小技巧 在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候 ...
- 常用的一些javascript小技巧
(转载)常用的一些javascript小技巧: http://bbs.blueidea.com/thread-2201069-1-1.html
- 12个非常有用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 8个Javascript小技巧
1. 使用 + 字符可以转换成数字 比如要把一个字符串数字转换成数字,你可能会这样做: var one = '1'; var two = '2'; var numberOne = Number(one ...
- JavaScript小技巧整理篇(非常全)
能够为大家提供这些简短而实用的JavaScript技巧来提高大家编程能力,这对于我来说是件很开心的事.每天仅花上不到2分钟的时间中,你将可 以读遍JavaScript这门可怕的语言所呈现给我们的特性: ...
随机推荐
- android--SDK Manager下载Connection to http://dl-ssl.google.com refused
错误 Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connec ...
- C语言基础知识【数据类型】
C 数据类型1.在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式.2.C 中的类型可分为以下几种:序号 类 ...
- 用C#来学习唐诗三百首和全唐诗
Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了[唐诗三百首]和[全唐诗]这两个txt文件,正好用C#来整理一下. 然后导出QData格式,可以给其他软件读取. 以后弄个开 ...
- Unity3d 摇杆奖励
单个单元: publicclass RockerSingle : MonoBehaviour { // 枚举.类别 RockerType rockerType; //是否有效,最上面的为无效,即为f ...
- .net EF监控 MiniProfiler
1.从NuGet上下载所需要的包:MiniProfiler.mvc,MiniProfiler,MiniProfiler.ef 2.Global.asax 加入 protected void Appli ...
- 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:118 解决:54 题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N( ...
- Django在不启动server的情况下调用方法
from django.conf import settingsfrom django import template settings.configure() a = template.Templa ...
- centos7.0下删除yum和python之后恢复的办法
centos 7如果卸载了yum和python之后恢复的办法(该方法已经测试). 下载 地址 http://mirrors.163.com/centos/7/os/x86_64/Packages/ 下 ...
- iOS UIImage 拉伸问题 (适用于UIButton等需要局部拉伸的情况)
图片 有的切图切很大 还占用ipa大小,有时候 切图 只需要 局部或者说 一个压缩的图片的抽象状态 直接上代码 CGFloat top = ; // 顶端盖高度 ; // 底端盖高度 ; // 左端盖 ...
- 通过socket和Udp协议简单实现一个群体聊天工具(控制台)
编写一个聊天程序.有收数据的部分 和 发数据的部分.这两个部分需要同时执行,这就用到多线程技术,一个线程负责收,一个现象负责发. 因为收和发动作是不一致的,所以要定义两个run方法而且这两个方法要封装 ...