首页 > JavaScript
JS连续运算
JavaScript 是函数式编程语言,表达式运算的能力比较强大,通过连续运算可以设计敏捷的程序代码。
使用表达式表示:
如果转换为命令式语句,则代码如下:
如果使用逻辑运算符,可以进一步浓缩表达式。代码如下:
示例1
最常用的是连续赋值运算。var a = b = c = 1;上面代码相当于声明 3 个变量,并全部初始化值为 1。
示例2
条件运算符在连续运算中扮演者重要的角色,它可以把复杂的分支结构浓缩到一个表达式中。例如,在事件处理函数中,经常会用下面表达式处理事件对象兼容问题。event ? event : window.event;拆分为分支结构:
if(event){ event = event; //如果支持event参数,则直接使用event }else{ event = window.event; //否则调用window对象event属性 }
示例3
下面使用条件运算符设计多重分支结构。var a = ((a == 1) ? console.log(1)) : //如果a等于1,则提示1 (a == 2) ? console.log(2) : //如果a等于2,则提示2 (a == 3) ? console.log(3) : //如果a等于3,则提示3 (a == 4) ? console.log(4) : //如果a等于4,则提示4 console.log(undefined) //否则提示undefined );拆分为多重分支结构:
switch(a) { case 1 : console.log(1); break; case 2 : console.log(2); break; case 3 : console.log(3); break; case 4 : console.log(4); break; default: console.log(undefined);
示例4
对于复合型数据——对象、数组、函数,都可以作为操作数,参与表达式运算。例如,对于下面的操作:先定义函数,再调用函数。var f = function(x,y){ //定义匿名函数 return (x+y) / 2; } console.log(f(10,20));调用匿名函数
使用表达式表示:
console.log( (function(x,y){ return (x+y) / 2; }) (10,20) //直接调用匿名函数 ); //返回值15
示例5
通过小括号连续调用,使用表达式可以设计多层嵌套的函数结构。console.log( (function() { return function(x,y) { return function() { return (x+y) /2; } } }) () (10,20) () //连续3次运算 ); //返回值15
如果转换为命令式语句,则代码如下:
var f = function() { return function(x,y) { return function() { return (x+y) /2; } } } var f1 = f(); //第一次调用外层函数 var f2 = f1(10,20); //第二次调用中层函数 var f3 = f2(); //第三次调用内层函数 console.log(f3); //返回值15
示例6
下面示例演示如何使用表达式创建对象。var o = typeof 56; //返回数值56的类型 console.log( (new ( //根据多条件运算式返回值创建 (o == "string") ? String : (o == "number") ? Number : (o == "boolean") ? Boolean : (o == "array") ? Array: Object ) ).toString() //把创建的对象转换为字符串返回 );上面代码使用条件运算符的嵌套,连续判断变量 o 的值,然后使用 new 创建对象,最后通过点运算符调用 toString() 方法把新创建的对象转换为字符串并返回。
如果使用逻辑运算符,可以进一步浓缩表达式。代码如下:
console.log((new ((o == "string") ? String : (o == "number") ? Number : (o == "boolean") ? Boolean : (o == "array") ? Array : Object)).toString();
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算