Javascript支持很多其它的运算符,具体如下:

  一、条件运算符(?:)

    条件运算符是Javascript中唯一的三个操作数的三元运算符,有时会直接称做是“三元运算符”。

    基本格式:condition ? expr1 : expr2

    执行流程::condition为true,返回expr1,conditioin为false,返回expr2

    三元运算符的操作数可以是任意的类型,其实用if语句也会带来同样的效果,三元运算符只是提供了一种简写形式。

    事实上,三元运算符可以扩展使用,当设置的条件成立或者是不成立时,执行语句都可以不止一句,如下:condition?(expr1).(expr2) : (expr3).(expr4) 多个执行语句用"."连接,这样它的功能更像if...else流程语句上靠近了。

    同时它还可以嵌套使用,但嵌套使用的可读性不好,不利于后期的一个维护,不建议使用。

    <script>
//求a,b,c三值中的最大值
var a = 10, b = 12, c = 19; //要注意a,b,c类型要相同 var max1 = (a > b) ? a : b;
var max2 = (max1 > c) ? max1 : c;
console.log(max2); //19 var max = ((a > b) ? a : b) > c ? ((a > b) ? a : b) : c;
console.log(max); //19 if (a > b && a > c) {
max = a;
} else if (b > a && b > c) {
max = b;
} else {
max = c;
}
console.log(max);//19
</script>

  二、逗号运算符

    逗号运算符是二元操作符,它的操作数可以是任意类型。它首先计算左边操作数,然后计算右边操作数,最后返回右操作数的值,用逗号运算符可以在一条语句中执行多个运算。

    逗号运算符常用于声明多个变量。最常用的场景是在for循环中,这个循环通常具有多个循环变量。它还可以用于赋值,在用于赋值时,逗号运算符总是返回表达式中的最后一项。

    <script>
var a = 0, b = 2, c = 5;
//等价于:var a=0;b=2;c=5;
var num = (1, 2, 3, 4, 5);//不能去掉括号
console.log(num);
</script>

  三、圆括号运算符

    也叫做分组运算符,它有两种用法:表达式放在圆括号中作用是求值,跟在函数后面的作用就是调用函数

    <script>
//把表达式放在圆括号之中,将返回表达式的值
console.log(('a')); //a
console.log((1 + 9)); //10 //把对象放在圆括号之中,会返回对象本身
var n = { a: 1 };
console.log((n));//{a:1} //把函数放在圆括号中,会返回函数本身
function fn() {
return 1;
}
console.log((fn)); //function fn(){retrun 1;}
console.log(fn()); //1 //由于圆括号的作用是求值,如果将语句放在圆括号中,会报错,圆括号运算符不能为空</script>

  四、void运算符

    void是一元运算符,它出现在操作数之前,操作数可以是任意类型,这个运算符并不经常的使用,操作数会照常计算,但忽略计算结果且返回undefined。由于void会忽略操作数的值,所以在操作数具有副作用的时候使用void来让程序更具语义。

    这个运算符最常用在客户端URL——javascript:URL中,在URL中可以写带有副作用的表达式,而void则让浏览器不必显示这个表达式的计算结果。例如,经常在HTML代码中的<a>标签里使用void运算符。   

<a href="javascript:void window.open();">打开一个新窗口</a>

   五、delete运算符

    delete是一元运算符,它用来删除对象属性或者数组元素。它是用于做删除操作的。需要注意的是,删除属性或者删除数组元素不仅仅是设置了一个undefined的值,当删除一个属性时,这个属性将不会存在,读取一个不存在的属性将返回undefined,但是可以通过in运算符来检测这个属性是否在对象中存在。

  delete希望它的操作数是一个左值,如果不是左值那么将不进行任何操作返回true。否则delete将试图删除这个指定的左值,如删除成功,delete将返回true。

  需要强调的一点是并不是所有的属性都是可以删除的,一些内置的核心和客户端属性是不能删除的,用户通过var语句声明的变量也是不能删除的,同样通过function语句定义的函数和函数参数也是不能删除的。

    <script>
var n = {
x: 1,
y: 2
}
console.log(delete n.x);     //true 删除一个对象的属性,返回true
console.log(typeof n.x);    //undefined 属性不存在时,返回undefined
console.log(delete n);     //false 不能删除通过var声明的变量
</script>

  六、typeof运算符

    typeof是一个一元运算符,放在其单个操作数的前面,操作数可以是任意类型。返回值为表示操作类型的一个字符串。对不同的操作数,它返回不同的结果。

    <script>
//对于数字类型,typeof返回的值是number
console.log(typeof (1));//number
console.log(typeof (NaN));//number //对于字符串类型,typeof返回的值是string
console.log(typeof ("string"));//string //对于布尔值,typeof返回的值是Boolean
console.log(typeof (true));//true //对于对象、数组、null 返回的值是 object
console.log(typeof (window));//object
console.log(typeof (null));//object //对于函数类型,返回的值是 function
console.log(typeof (Date));//function
//如果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined
console.log(typeof (undefined));//undefined
</script>

  七、其它 (运算符的优先级)  

    一元运算符 > 算术运算符 > 比较运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符 > 逗号运算符

    中括号,小括号,点属于同一级别,它们有最高的优先级,如果不确定先算谁,可以给要算的内容加上小括号,提升其优先级。

<script>
var a={
b:
}
var c=[,,];
console.log(a.b+c[]); //
</script>

 

js之运算符其它运算符(三元运算符,逗号运算符,void运算符,typeof,delete运算符)的更多相关文章

  1. javascript特殊运算符(in,instanceof,typeof,delete,void,逗号)

    in运算符                 in运算符要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数十一个对象或数组.如果该 运算符左边的值是右边对象的一个属性名,则返回true, ...

  2. Net is as typeof 运行运算符详解 net 自定义泛型那点事

    Net is as typeof 运行运算符详解   概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...

  3. C++重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  4. C++学习32 重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  5. c/c++ 重载new,delete运算符 placement new

    重载new,delete运算符 new,delete在c++中也被归为运算符,所以可以重载它们. new的行为: 先开辟内存空间 再调用类的构造函数 开辟内存空间的部分,可以被重载. delete的行 ...

  6. 用new和delete运算符进行动态分配和撤销存储空间

    測试描写叙述:暂时开辟一个存储空间以存放一个结构体数据 #include <iostream> #include <string> using namespace std; s ...

  7. 重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  8. C++ new和delete运算符得简单使用

    NEW C++ 中的new运算符用来分配内存,和c语言中得malloc有相似得功能. 使用new为当个元素开辟内存空间,并返回地址 typeName *pointer_name =new typeNa ...

  9. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)

    day46 一丶javascript介绍 JavaScript的基础分为三个       1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...

随机推荐

  1. Java-GC 垃圾收集器(HotSpot)

    垃圾收集器为垃圾收集算法的具体实现,是执行垃圾收集算法的,是守护线程. HotSpot 虚拟机采用分代收集(JVM 规范并未对堆区进行划分),将堆分为年轻代和老年代,垃圾收集器也按照这样区分.不过已有 ...

  2. koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据

    1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...

  3. 如何查看 SELinux状态及关闭SELinux

    查看SELinux状态: 1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态 SELinux status:         ...

  4. [sh]shell语法小结

    参考 基础语法 数字比较 -lt -eq -gt [ `ps -ef|grep nginx|grep -v grep|wc -l` -eq 0 ] str比较 == != [ $USER == &qu ...

  5. SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

    问题描述: 已经安装了android-sdk 和gradle环境,并配置了环境变量,如下所示: android环境 root@wangju-HP--G4:/home/wangju/Desktop/5i ...

  6. mongodb将mysql数据导入

    1.首先将数据从mysql数据库导出为xls文件 SELECT * FROM user INTO OUTFILE "F:\1.xls" 2.notepad++打开,用utf8编码保 ...

  7. tableau extension 调研

    概述 最近调研了一下 tableau extensions 的实现,有一些心得,记录下来,供以后开发时参考,相信对其他人也有用. 总的来说,写 tableau extensions 还是挺简单的,只是 ...

  8. 手动部署 Ceph Mimic 三节点

    目录 文章目录 目录 前文列表 部署拓扑 存储设备拓扑 网络拓扑 基础系统环境 安装 ceph-deploy 半自动化部署工具 部署 MON 部署 Manager 部署 OSD 部署 MDS 部署 R ...

  9. MySQL操作符与相关函数

    union(联合)union使用是关联两张表或者两个查询所查出来的数据,联合成一张表但不会出现重复数据,显示的字段必须匹配列数. select s3.id cid,s1.cityName provin ...

  10. 六十五:CSRF攻击与防御之CSRF防御之form表单防御

    防御原理,将csrf_token放到session中,再将session放到cookie中 实现: from flask_wtf import CSRFProtect # flask_wtf 已经提供 ...