javascript另类写法
今天来介绍一下javascript不一样的写法,很简单哦。
1、当条件成立时执行a方法,当条件失败是执行b方法
通常我们会这样写:
var result;
if(isOk){
result=funA();
}else{
result=funB();
}
还可以这样表达:
var result=isOk? funA():funB()
2、当条件成立执某个方法
通常方式:
if(isOk){
doSomething();
}
我更喜欢这样写:
isOk&&doSomething();
如果一个变量没定义或没有值则给它一默认值
str=str||"ok";
arr=arr||[];
上面的方式可行,是因为在js逻辑运算中,返回值不一定是true或false,也可以是其他任何值,
而且 0、""、null、false、undefined、NaN都会判为false,其他都为true。举例:
1&&"OK" //表达式的值为字符串"OK",逻辑上被判定为 true
1||"OK" //表达式的值为数字1,逻辑上被判定为 true
null||[] //表达式的值为数组[],逻辑上被判定为 true
null&&[] //表达式的值为null,逻辑上被判定为 false
3、当进行多个条件判段时
给一个例子:每种颜色对应一个值,比如"white","red","green","yellow","gray","blue" 分别
对应的值为0,1,2,3,4,5
1) 问题一:根据值获取颜色
实现方式一
function getColorByVal(val) {
var color = "";
if (val = 0){
color = "white";
}else if (val = 1) {
color = "red";
} else if (val = 2) {
color = "green";
} else if (val = 3) {
color = "yellow";
} else if (val = 4) {
color = "gray";
} else if (val = 5) {
color = "blue";
}
return color;
}
实现方式二
function getColorByVal(val) {
var color;
switch (val) {
case 0:
color = "white";
case 1:
color = "red";
break;
case 2:
color = "green";
break;
case 3:
color = "yellow";
break;
case 4:
color = "gray";
break;
case 5:
color = "blue";
break;
}
return color;
}
实现方式三
function getColorByVal(val) {
return ["white","red","green","yellow","gray","blue"][val];
}
调用: var color=getColorByVal(2);
方式一和方式二相比没什么差别,但方式二稍微好一点,而方式三则是让人眼前一亮,短小精悍
就完成了功能。不过有的人会说颜色的值刚好是数组下标,所以我们再来一题:
2) 问题二:根据颜色获取值
你可以用if 或switch 语句来完成,不过这里给出另外两种方式:
方式一:
function getValByColor(color){
var colors=["white","red","green","yellow","gray","blue"];
var result;
for(var i=colors.length-1;i--;){
if(colors[i]==color){
result=i;
break;
}
}
return result;
}
方式二:
function getValByColor(color){
return {"white":0,"red":1,"green":2,"yellow":3,"gray":4,"blue":5}[color];
}
调用: var val=getValByColor("red");
对比一下很明显,方式二更简单而且易懂,巧妙在于构造一个对象,通过属性获取值,从而避开
了繁琐的判断。
4、交换两个变量的值
通常是这样实现的:
var temp=0,a=5,b=10;
temp=a;
a=b;
b=temp;
不过还可以更巧一些:
var a=5,b=10;
a=[b,b=a][0];
a=[b,b=a][0] 执行过程:先执行数组里两个表达式b和b=a,作用是把5赋值给b并产生一个数组[10,5] ,然后 a=[10,5][0]即 a=10,这样就完成了交换,不过也借助了无名的数组,但看起来好想没借助第三个变量,不过不提倡这样做,毕竟第一种方式更易懂。
5、获取对象的属性 方式一
var arr=[],i=0;
var colors={"white":0,"red":1,"green":2,"yellow":3,"gray":4,"blue":5};
for(var key in colors){
arr[i++]=key;
}
方式二
var arr=[],i=0;
var colors={"white":0,"red":1,"green":2,"yellow":3,"gray":4,"blue":5};
for(arr[i++] in colors);
两种方式都得到了对象colors的属性(arr=["white", "red", "green", "yellow", "gray", "blue"]), 第二种方式不过搭了 for in 语句的顺风车。方式一中for in语句依次从colors获取一个属性赋值给key,只不过在方式二中赋值给了arr[i++]。这个纯粹是为了好玩,享受编程的乐趣也是编程的一部分吧。。
javascript另类写法的更多相关文章
- JavaScript技巧&写法
原文:JavaScript技巧&写法 JavaScript技巧篇: 1>状态机 var state = function () { this.count = 0; this.fun = ...
- javascript json写法
javascript json写法 var shuxing = {name:"super",sex:"19",work:"IT"}; 这个k ...
- .net EasyTree显示所级层级(无限级、整层级颗树)的另类写法。非递归
获取整颗树的另类写法.非递归 //获取所有的菜单 List<T_Menu> menu = bll.getMenuByUsesrID("8189a7c1-6f15-4744-b6c ...
- [js高手之路] javascript面向对象写法与应用
一.什么是对象? 对象是n个属性和方法组成的集合,如js内置的document, Date, Regexp, Math等等 document就是有很多的属性和方法, 如:getElementById, ...
- addEventListener 的另类写法
addEventListener 参数如下 addEventListener(type, listener[, useCapture]); type,事件名称 listener,事件处理器 useCa ...
- sql查询条件为空的另类写法o( ̄▽ ̄)d
简单描述:今天看老大提交的代码,发现了一个有意思的事情,一条sql中判断条件是空,老大的写法,让我眼前一亮.直接上代码 代码: <select id="getxxxs" re ...
- 巧用style的另类写法
看到style,不少人可能会说这个我知道,就是控件写属性的话可以通过style来实现代码的复用,单独把这些属性及其参数写成style就可以便捷的调用. <?xml version="1 ...
- php登陆界面刷新验证码 javascript 的写法
<script type="text/javascript"> function refreshVerify(){ var imgId = document.getEl ...
- JavaScript函数写法整理
1.普通函数定义的两种写法 function hello(){ console.log("hello!"); } var hello = function(){ console.l ...
随机推荐
- zjoi2018day1 游记
3.18 这一天乘车来到衢州,这已经是第四次了,来衢州二中考过两次普及,一次提高,都不是特别好. 到了以后先去了宾馆,是在帝京,和NOIP一样的酒店,连房间都是隔壁,然后一进去就连上了隔壁的WIFI ...
- 【ZOJ4070】Function and Function(签到)
题意:求 k 层嵌套的 f(x) 0<=x,k<=1e9 思路:迭代不会很多次后函数里就会=0或者1,再看层数奇偶直接返回答案 #include<cstdio> #includ ...
- CodeForces 659D Bicycle Race (判断点是否为危险点)
D - Bicycle Race Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u S ...
- [ZJOI2008]树的统计——树链剖分
本题是一个树链剖分裸题,由于比较菜,老是RE,后来发现是因为使用了全局变量. /************************************************************ ...
- JavaWeb响应下载(包含工具类)
纸上得来终觉浅,绝知此事要躬行!今天博主分享是关于javaweb的响应(response)下载 以下是我的Demo: 页面我就粘主要部分的代码 <a href = "${pageCon ...
- mysql 事务、游标
mysql 事务 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎. 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行 ...
- xpath测试工具 xpath调试工具
其实这个工具没什么介绍的了 因为目前有项目中需要到了xpath语法,然后呢,有没有什么好的工具 大部分都是联网的,个人比较喜欢离线的工具包 所以顺手就写了一个小工具来测试xpath语法的正确性 so, ...
- python接口自动化4-绕过验证码登录(cookie)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...
- js正则常用的一些东西
mdn的正则文档 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions js正则表达式的分 ...
- tf一些理解(根据资料)
首先看了开源操作机器人系统-ros这本书(张建伟)第五章slam导航 5.1使用tf配置机器人 还有ros navigation 教程 http://wiki.ros.org/navigation/T ...