有用的JavaScript开发小建议
这篇文章将向你分享一些不为人知的但很有用的JavaScript小建议,对那些刚涉及使用JavaScript编程语言的初级开发者应该有很大的帮助。
1. 用数组长度截取数组
我们都知道,对象都是通过使用JavaScript引用的,但这并不是唯一的准则,请看下面的检验案例:
var arr1 = arr2 = [1, 2, 3]; //Change arr1
arr1 = [];// arr2 will still be [1,2,3]
最初,arr1和arr2都指向了数组[1,2,3],之后当arr1重新指向[ ]的时候,arr2的引用并没有发生什么变化,仍然指向[1,2,3]。但是如果我们想让arr1和arr2都指向[ ]的话,那应该怎么做呢?我们可以利用数组的长度属性。当设置arr1.length=0的时候,arr1里面的要素将被清空。而引用是不会改变的,所以arr1和arr2指向[ ]。
2. 用push来合并数组
我们通常使用concat()来合并两个数组,例如:
var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=arr1.concat(arr2);
arr3;
[1, 2, 3, 4, 5, 6]
我们同样可以利用push()来达到这种效果:
var arr1=[1,2,3];
var arr2=[4,5,6];
Array.prototype.push.apply(arr1,arr2);
arr1
[1, 2, 3, 4, 5, 6]
应用这种方法可以把一个数组作为第二个参数,因此,arr2能够被推送到arr1里面。
3. 特征检测
在我们使用的很多API里,我们能看到一些特征检测语句,这些语句是用来检查浏览器是否支持特定的属性或方法,以便能够支持跨浏览器兼容性。可以这样做:
if(window.opera){
console.log("OPERA");
}else{
console.log("NOT OPERA");
}
这样的运作方式是正确的,但它的缺点是效率不高。这种类型的对象检测将在浏览器里初始化资源。更有效地方式是检查密钥是否在某一个对象里。
if("opera" in window){
console.log("OPERA");
}else{
console.log("NOT OPERA");
}
4. 检查某一个对象是不是数组
在JavaScript编程语言里,我们可以使用typeof来检查变量的类型,typeof可以返回数字、布尔值、字符串、对象、函数和未定义的对象。事实上这里没有数组,typeof数组就是一个对象。所以我们怎么来决定一个对象就是一个数组呢?在ECMAScript 5编程语言里,我们可以使用 Array.isArray(obj)来检查这里所提到的问题。但是目前ECMAScript 5还没有得到广泛使用。
不过,我们可以使用下面的方法:
var obj=[];
Object.prototype.toString.call(obj)=="[object Array]";
true
有用的JavaScript开发小建议的更多相关文章
- 22条常用JavaScript开发小技巧
1.使用var声明变量 如果给一个没有声明的变量赋值,默认会作为一个全局变量(即使在函数内赋值).要尽量避免不必要的全局变量. 2.行尾使用分号 虽然JavaScript允许省略行尾的分号,但是有时不 ...
- JavaScript开发小技巧
总结一些能够提高开发效率的JS技巧 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的,没有重复的值.结合扩展运算符(...)我们可以创建一个新的数组,达到过滤原数组重 ...
- 15款很棒的 JavaScript 开发工具
在开发中,借助得力的工具可以事半功倍.今天,我爱互联网向大家分享最新收集的15款非常有用的 javascript 开发工具. TestSwarm: Continious & Distribut ...
- 12个非常有用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 【开源】Westore Cloud 发布- 没后端没SQL没DBA,只需 javascript 开发云端小程序
Westore Cloud - 隐形云,NoBackEnd,NoSql,HiddenDB 好的设计便是感觉不到设计的存在 开发小程序,但是:没有后端!没有运维!没有 DBA!没有域名!没有证书!没有钱 ...
- 微信小程序--关于加快小程序开发的几个小建议
加快小程序开发的几个小建议 1.使用 app.json创建页面 按照我们平常的开发习惯,创建一个新的页面,一般都会先创建文件夹,再创建对应page的形式,创建完成后,app.json中会自动注册该 ...
- 使用SeaJS实现模块化JavaScript开发
前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封 ...
- 提高 JavaScript 开发效率的高级 VSCode 扩展!
原文:提高 JavaScript 开发效率的高级 VSCode 扩展! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. Quokka.js Quokka.js 是一个用于 JavaSc ...
- JavaScript开发工具大全
译者按: 最全的JavaScript开发工具列表,总有一款适合你! 原文: THE ULTIMATE LIST OF JAVASCRIPT TOOLS 译者: Fundebug 为了保证可读性,本文采 ...
随机推荐
- beta发布简评
第一组:新蜂小组 题目:俄罗斯方块 评论:主体功能已经完成,可以流畅的进行游戏,无论效果或是功能都实现的很好. 第二组:Nice团队 题目:约跑APP(约吧) 评论:作为应用,想法创意很好:功能实现上 ...
- dbms_sqltune.report_sql_monitor 自动调优
--创建 dbms_sqltune.create_tuning_task ; --执行 dbms_sqltune.execute_tuning_task; --产看创建的task 和 status S ...
- eureka集群高可用配置
譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配区别在哪里:eureka的客户端添加service-url时,是不是需要把所有的 ...
- 小试javascript模版mustache
夜以深,人未眠,本该入睡,然逢周末,无聊甚哉,故于此作文打发时间----------- 前几日,无聊,小试了下javascript版本的mustache模版,说是小试,其实主要目的是阅读学习其源码.如 ...
- 不再混淆,一次搞懂!图解flexbox十余个属性
原文首发于个人博客:不再混淆,一次搞懂!图解flexbox十余个属性 flexbox的发明简直是csser的一大福音,终于可以不再需要为垂直居中一个元素而绞尽脑汁了.同时它还能够实现弹性布局,可以说没 ...
- 多线程同步与并发访问共享资源工具—Lock、Monitor、Mutex、Semaphore
“线程同步”的含义 当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行“线程同步(thread synchro ...
- 【HLSDK系列】overview(俯视图)
温馨提示:使用PC端浏览器阅读可获得最佳体验 阅读本文时,请时不时就对照参考图看一下. 什么是overview? 如果你有使用过3D模型制作工具,例如3dsMax等等,在编辑模型时这些软件通常会展示四 ...
- BZOJ 2738 子矩阵第k大 | 二维树状数组 整体二分 分治
BZOJ 2738 "矩阵乘法"(子矩阵第k大) 题意 给出一个矩阵,多次询问子矩阵中第k大的数是多少. 题解 我做这道题之前先照着这道题出了一道题,是这道题的一维版本,在这里:h ...
- 20135239益西拉姆 Linux内核分析 进程的描述和进程的创建
[益西拉姆 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] 第六周 进程的描述 ...
- 《Linux内核设计与实现》学习总结 Chap3
第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限 ...