javascript : splice(0) 的妙用
今天看前同事的代码,有个写法很有意思: splice(0)。
有意思的是,这并不是一个“合法”的写法。
w3school是这样写的:
arrayObject.splice(index,howmany,item1,.....,itemX)
| 参数 | 描述 | 
|---|---|
| index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 | 
| howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 | 
| item1, ..., itemX | 可选。向数组添加的新项目。 | 
index和howmany都是必须的,但似乎只写index也可以...
那么,到底 splice(0) 会怎么样呢?
stackoverflow 上有个问题很有意思。
有个人说,我想把数组A的东西拷贝到数组B,结果数组A怎么就没了?
var ArrayA = [];
var ArrayB = []; ArrayA.push(1);
ArrayA.push(2); ArrayB = ArrayA.splice(0); alert(ArrayA.length);
没错 splice() 会修改原数组,而 splice(0) 会把原数组清空。
var a = [1,2,3,4,5]
,b = a.splice(0);
//=> a = [], b = [1,2,3,4,5]
那怎么解答这个人的问题?
很简单,用 slice() 就可以了。slice() 不会改变原数组。
var a = [1,2,3,4,5]
,b = a.slice();
//=> a = [1,2,3,4,5], b = [1,2,3,4,5]
javascript : splice(0) 的妙用的更多相关文章
- JS异步执行之setTimeout 0的妙用
		
最近在工作中遇到一些问题,大致是关于js执行问题的.由于没搞清执行顺序,导致出现了一些奇怪的bug. 所以这里整理一些有关异步执行的知识(冰山一角角)... 大家都知道js是单线程的,执行起来是顺序的 ...
 - js中 javascript:void(0) 用法详解
		
点击链接不做任何事情: <a href="#" onclick="return false">test</a> <a href=& ...
 - html 空链接 href="#"与href="javascript:void(0)"的区别
		
#包含了一个位置信息 默认的锚是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#但跳动到了页首 而javascrip ...
 - a href=#与 a href=javascript:void(0) 的区别
		
a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onCl ...
 - href使用 javascript:;与javascript:void(0)防跳到顶部
		
有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法 href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢 ...
 - C语言中do...while(0)的妙用(转载)
		
转载来自:C语言中do...while(0)的妙用,感谢分享. 在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语 ...
 - javascript:void(0)
		
这是不是一个设计缺陷呢 void(0)这种用法巧妙利用void关键字的特性返回undefined(且没有副作用).因为不是关键字,比如直接使用undefined,内容可能被改写. 再来看为啥使用0,而 ...
 - <a href=”#”>与 <a href=”javascript:void(0)” 的区别
		
<a href=”#”>中的“#”其实是锚点的意思,默认为#top,所以当页面比较长的时候,使用这种方式会让页面刷新到页首(页面的最上部) javascript:void(0)其实是一个死 ...
 - 超级链接a中javascript:void(0)弹出另外一个框问题
		
转字:http://my.oschina.net/castusz/blog/68186 结果在IE.Firefox.Chrome都是先执行的onclick事件,在项目中我们尽量不要同时使用这两种方式. ...
 
随机推荐
- c++构造函数的调用方法
			
#include<iostream> using namespace std; class Base { public: Base(){ cout<<"hello&q ...
 - Linux下如何寻找相同文件?
			
大家好,我是良许. 随着电脑的使用,系统里将产生很多垃圾,最典型的就是同一份文件被保存到了不同的位置,这样导致的结果就是磁盘空间被大量占用,系统运行越来越慢. 所以如果你的电脑空间告急的话,可以试着去 ...
 - SourceTree使用详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决)
			
前言: 俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的.目前市面上比较流行的Git可视化管理工具有SourceTree.Github Desktop.Tortois ...
 - java8 探讨与分析匿名内部类、lambda表达式、方法引用的底层实现
			
问题解决思路:查看编译生成的字节码文件 目录 测试匿名内部类的实现 小结 测试lambda表达式 小结 测试方法引用 小结 三种实现方式的总结 对于lambda表达式,为什么java8要这样做? 理论 ...
 - 学习Java的Day02
			
知识点 数组: 一维数组 声明: 类型[] 数组名;([] 在前后没有影响,一般写在名称前.) 创建数组 数组名 = new 类型[数组长度]. 数组索引从0开始.获取数组长度:数组名.len ...
 - 编译ts时候src目录的ts分别生成了单独的js文件
			
{ "compilerOptions": { "target": "es5", "outDir": "bin- ...
 - Java中Map的4种遍历方式
			
第一种方式:这是平常用的最多也最可取的一种遍历方式. for (Map.Entry<String, Object> entry : map.entrySet()) { System.out ...
 - JavaScript基础关于JSON(011)
			
JSON意即JavaScript Object Notation,是JavaScript里数据表示的通用格式,JSON数据格式很象JavaScript里的对象: {"name": ...
 - 洛谷 P1215 【[USACO1.4]母亲的牛奶 Mother's Milk】
			
这道题\(DFS\)就好了,六种情况,\(ab,ac,ba,bc,ca,cb\),我们直接枚举就可.什么?这样不会结束?用一个\(vis\)数组判断走过没有就可以了.最后排序输出即可. \(code: ...
 - visual studio 项目中使用EF创建的数据库,后续更新数据库操作(生产已经部署,不能删除数据库重新创建)
			
情景:SharePoint项目(其他类型的项目道理也一样),数据库是用EF(版本:6.0.0.0)创建的,生产环境已经使用,所以后续修改数据库,只能通过更新来实现. 下面是具体的操作方式: 1.vis ...