我的个人博客:http://www.xiaolongwu.cn

接上篇文章

js编码的实用技巧(一)

5、合理利用||运算符

使用||可以作为参数之外的默认值,当第一个参数返回值为false时,那么第二个值就为默认值。

一般在面向对象思想中这么使用。

function User(name, age) {
this.name = name || "leonWu";
this.age = age || 29;
}
var user1 = new User();
console.log(user1.name); // leonWu
console.log(user1.age); // 29 var user2 = new User("delia", 28);
console.log(user2.name + " is my wife"); // delia is my wife
console.log(user2.age); // 28

6、三木运算符

看看下面的例子,我相信你就会立马理解了

var x = 10,b = null;
if (x > 5) {
b = 7;
} else {
b = 2;
}

这段代码用三木运算简写为

b = x > 5 ? 7 : 2;
//解释一下上面的代码
// 当x > 5 时返回7并赋值给b,反之则返回2赋值给b

7、判断相等时用 === 而不是 ==

因为== 和 != 在做判断时,会在某些情况下进行隐式类型转换,但是 === 和 !== 却不会,并且它们会同时对值大小和值类型进行比较,所以=== 和!== 要比== 和!=的处理速度快。

看例子

[5] == 5; //true
[5] === 5; //false
"5" == 5; //true
"5" === 5;//false
"" == 0; // true
"" === 0; //false
[] == "" //true
[] === "" //false

8、随即从数组中取一个元素

var items = [123, 81 , 'abc' , 234 , 781 , 'leonwu', 114, , 'delia' , 110 , 120];
var randomItem = items[Math.floor(Math.random() * items.length)];

稍微解释一下上面的代码

  1. Math.floor()这个方法为js内置的方法,向下取整,即Math.floor(2.9)结果为2,Math.floor(2.1)结果也为2。
  2. Math.random()为在[0-1)之间取一个随即浮点数,包括0但不包括1;

所以上面randomItem的结果是[0-9]之间的一个随即整数。

9、在指定的范围中取出一个随机整数

这个方法应该是上面第8条的加强版,只要理解上面的方法,那么这个方法理解起来就不会有难度。在这里多一嘴,很多东西靠死记硬背是记不住的,但是只要你理解了,那么你想忘记就比较难了。好了,不扯淡了,我们开始

上代码

//先看看下面这个方法,不理解不要紧,继续向下看你就会理解它

var a = Math.floor(Math.random() * (max - min + 1)) + min; 

//下面就让我们慢慢的理解上面这个方法是怎么来的

//先写出在[0-10]之间取随机整数的方法

var b = Math.floor(Math.random() * 10) //这个返回的是[0-10),不包括10,最大到9

 b = Math.floor(Math.random() * (10 + 1)); //这样就能取到[0-10]之间的随即整数了

//然后取一个[30-40]之间的随机整数

//我们把上面的任务分解为先取一个[0-10]之间的随机整数,然后再加上30,是不是就能满足我们上面的需求了,看代码

var c = Math.floor(Math.random() * (40-30 + 1)) + 30;

//那我们要取[max-min]之间的随机整数,代码是不是就为

var a = Math.floor(Math.random() * (max - min + 1)) + min;

//我们是不是已经理解了这段代码的意义呢,是不是想忘记都会很难呢?如果没理解就再多想想。

下图为Math对象的常用方法,以供大家学习参考

github资源地址:https://github.com/js编码的实用技巧(二).md

我的个人博客:http://www.xiaolongwu.cn

csdn博客地址:https://blog.csdn.net/wxl1555

如果您对我的博客内容有疑惑或质疑的地方,请在下方评论区留言,或邮件给我,共同学习进步。

邮箱:wuxiaolong802@163.com

js基础进阶--编码实用技巧(二)的更多相关文章

  1. js基础进阶--编的实用技巧(一)

    我的个人博客:http://www.xiaolongwu.cn 在平时的开发中,编码技巧很重要,会让你少写很多代码,起到事倍功半的效果. 下面总结几种简单的技巧,大家共同学习一下 1. 利用+.-./ ...

  2. js基础进阶--关于setTimeout的思考

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 先热身 看看下面的额代码会打印出什么? for (var i = 0; i < 5; i++) { setTimeout( ...

  3. js基础进阶--图片上传时实现本地预览功能的原理

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 最近在项目上加一个图片裁剪上传的功能,用的是cropper插件,注意到选择本地图片后就会有预览效果,这里整理一下这种预览效 ...

  4. SVG.js 基础图形绘制整理(二)

    一.折线 var draw = SVG('svg1').size(300, 300); //画折线 //使用字符串点 // var polyline=draw.polyline('0,0 100,50 ...

  5. js基础进阶--关于Array.prototype.slice.call(arguments) 的思考

    欢迎访问我的个人博客:http://www.xiaolongwu.cn Array.prototype.slice.call(arguments)的作用为:强制转化arguments为数组格式,一般出 ...

  6. js使用的一些实用技巧

    1.jquery中页面定时调用ajax方法 function SetContinueSend(param1,param2, func){ func.call(null,param1,param2) } ...

  7. JS基础入门篇(十二)—JSON和Math

    1.JSON JSON: 对象格式的字符串 轻量的数据传输格式 注意事项: 键名 需要 使用 双引号 包起来 JOSN有两个方法:JSON.parse和 JSON.stringify. JSON.pa ...

  8. c++实用技巧

    原地址:http://www.cnblogs.com/easymind223/articles/2576904.html 晚上的时间总是习惯性的在cnblogs逛街,今天又看到了好文章,其c++味道浓 ...

  9. 麒麟子Cocos Creator实用技巧

    大家好,我是麒麟子, 开源棋牌<幼麟棋牌-四川麻将>(泄漏版叫 <达达麻将>)作者,成都幼麟科技创始人. 自09年进入游戏行业以来,不知不觉已经度过了十个春秋. 曾经我也血气方 ...

随机推荐

  1. Gradle 1.12用户指南翻译——第二十一章. Gradle 插件

    昨天晚上只顾着和女朋友看<匆匆那年>电视剧的最后几集,所以说好的Android文档<Gradle 插件用户指南>第五章自然也没翻译多少.所以今天也发不了第五章的翻译了,就发几个 ...

  2. Linux 安装python爬虫框架 scrapy

    Linux 安装python爬虫框架 scrapy http://scrapy.org/ Scrapy是python最好用的一个爬虫框架.要求: python2.7.x. 1. Ubuntu14.04 ...

  3. 【嵌入式开发】C语言 结构体相关 的 函数 指针 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://www.hanshuliang.com/?post=30 . 结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同; -- 可进行 ...

  4. libevent之event_base

    event_base是libevent的事务处理框架,负责事件注册.删除等,属于Reactor模式中的Reactor. event_base结构体 event_base结构体定义于<event_ ...

  5. /dev、/sys/dev 和/sys/devices 和udev的关系

    /dev,设备文件存储目录,应用程序通过对这些文件的读写和控制,可以访问实际的设备: /sys/devices目录,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备:是文件系统管理设备的最 ...

  6. C++11特性 - Smart Pointers 智能指针

    已经有成千上万的文章讨论这个问题了,所以我只想说:现在能使用的,带引用计数,并且能自动释放内存的智能指针包括以下几种:         unique_ptr: 如果内存资源的所有权不需要共享,就应当使 ...

  7. windows linux—unix 跨平台通信集成控制系统

    首先,我们可以用到这个开源的开发包: mdk(Micro-Development-Kit)微量级软件开发包,提供几个常用类,主要实现了一个高性能的并发服务器引擎 使用c++开发,是一个跨平台的开发包, ...

  8. 如何配置android的adb环境变量

    如果打开DOS窗口,输入adb显示既不是内部命令也不是外部命令,则说明没有配置adb环境变量.方法如下: 第一步: 打开环境变量配置窗口.右击计算机,属性-高级系统设置-环境变量. 第二部: 添加an ...

  9. PS 图像调整算法——亮度调整

    这个算法是参考自 阿发伯 的博客,在此对 阿发伯 表示感谢, http://blog.csdn.net/maozefa 亮度调整 非线性亮度调整: 对于R,G,B三个通道,每个通道增加相同的增量. 线 ...

  10. ZooKeeper客户端事件串行化处理

    为了提升系统的性能,进一步提高系统的吞吐能力,最近公司很多系统都在进行异步化改造.在异步化改造的过程中,肯定会比以前碰到更多的多线程问题,上周就碰到ZooKeeper客户端异步化过程中的一个死锁问题, ...