javascript中的【~~】运算符

javascript中的【~~】运算符,简单一点的用法就是可以将一些变量转化为Number(数字)类型的。

将数字类型的字符串转化为纯数字。

var a = ‘123‘;
console.log(~~a); // 输出数字类型的123

如果字符串中带了其他字母,符号,或者其他除数字外的东西,一律输出Number类型的0。

var a = ‘123a‘;
console.log(~~a); // 输出0

任何boolen类型的,如果为TRUE则输出1,FALSE输出0。

var a = 1 == 1;
console.log(~~a); // 输出1

特殊类型,转化为Boolean是true的输出1,转化为Boolean是false的输出0。

var a = undefined;
console.log(~~a); // 输出0
var a = !undefined;
console.log(~~a); // 输出1

最后来看一个特别厉害的应用例子。

var a = (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]];
console.log(a); // 输出"sb"

"如果有一天失去的东西回来了,你还会要吗?"

原文地址:https://www.cnblogs.com/yanggb/p/11825784.html

时间: 2024-10-14 09:39:26

javascript中的【~~】运算符的相关文章

JavaScript中“typeof”运算符与“instanceof”运算符的差异

在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了.“typeof”是一元运算符,其后直接跟需要进行类型判断的数据:而“instanceof”是二元运算符,其左侧是需要判断的数据,右侧是用于比较的类型. //typeof是一元运算符: var amount = 108; console.log(typeof amout);//控制台输出“numbe

JavaScript中的运算符

JavaScript中的运算符,JavaScript是具有全范围的运算符,包括算术.逻辑.位.赋值以及其他某些运算符. 计算逻辑位运算赋值杂项 描述符号描述符号描述符号描述符号描述符号 负值-逻辑非!按位取反~赋值=删除deletewww.mlybyby.com 递增++小于<按位左移<<运算赋值oP=typeof 运算符typeof 递减--大于>按位右移>>voidvoid 乘法*小于等于<=无符号右移>>>instanceofinstanc

JavaScript学习系列7 -- JavaScript中的运算符

今天,我们来说一说JavaScript中的运算符,首先我们来讲一讲 一元运算符 JavaScript中的一元运算符有以下几种 1. delete delete 运算符主要用于删除对以前定义的对象属性或者方法的引用, 举个例子如下 var myObj = new Object(); // 这一句和 var myobj = new Object(); 等价 myObj.name = "Luke"; alert(myObj.name); // 输出 "Luke" dele

JavaScript中逗号运算符和this

遇到一道题目,写出下面的输出: 结果如下: 第一个是child's name没有问题,第二个指定的也是child,依然是child's name,第三个和第二个实际上是一样的,(parentObj.child=parentObj.child)相当于(parentObj.child),都是函数名,第四个又是什么鬼呢. 逗号运算符是很少见的,查了资料才知道,使用逗号运算符时,先计算左操作数的值,再计算右操作数的值,最后返回右操作数的值.因此,(parentObj.child,parentObj.ch

javascript中算术运算符规则

javascript中提供了几种算术运算符,+(加)  -(减)  *(乘)  /(除)  %(余),常规用法与数学上的一致:  但还规定一些特殊规则: 注:JavaScript中保存数值的方式,可以保存正零(+0)和负零(-0):正零与负零被认为相等. 乘性操作符(*): 如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity. 如果某个运算数是 NaN,结果为 NaN. Infinity 乘以 0,结果为 NaN Infinity 乘以 0 以外的任何数字,结果为 I

javascript中关系运算符的说明

决定javascript语法的部分叫做ECMAScript,JavaScript的语法相比较java来说宽松了很多,同时也复杂了很多.在ECMAscript中进行关系符运算时,经常会遇到各种类型转换,大部分的类型转换都是自发的,在应用不同的操作符进行转换时,数据类型的转换又会有所不同. javascript中的关系运算符包括'>','<','>=','<='. 当两个做比较的操作数都是数字的时候,直接进行比较(当然了,这是废话). 当两个操作数都是字符串的时候,比较字符串对应的字符

javascript中new运算符

创建一个用户自定义的对象需要两步: 1.通过编写函数,来定义对象类型. 2.通过new来创建对象实例. new的工作流程: 1.创建一个空对象(var obj = {};) 2.使该空对象继承于构造函数的原型(obj.__proto__ = Foo.prototype;) 3.使用指定的参数调用构造函数 Foo ,并将 this 绑定到新创建的对象.(Foo.call(obj, x, y, z);) 4.由构造函数返回的对象就是 new 表达式的结果.如果构造函数没有显式返回一个对象,则使用步骤

JavaScript中instanceof运算符的用法以及和typeof的区别

instanceof : 为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型栗子①: <script type="text/javascript"> var aColors = ["red", "green", "blue"]; alert(typeof aColors[0]); //output "string" alert(aColors[0] inst

javaScript中&quot;==&quot;和&quot;===&quot;运算符的区别

相同点: 两个运算符均可用于比较两个值是否相等,可允许操作任意类型的操作数,如果操作数相等则返回true,否则返回false. 不同点: "==="运算符也称为严格相等运算符,它用来检测两个操作数是否严格相等.该运算符首先计算其操作数的值,然后比较这两个值,比较过程中并不会首先对操作符进行任何类型转换. "=="运算符称为相等运算符,用来检测两个操作数是否相等,这里“相等”的定义非常宽松,可以允许进行类型转换.相等运算符"=="和"==

JavaScript中的运算符和语句

一.JavaScript的运算符 原文地址:https://www.cnblogs.com/yiluhuakai/p/8520251.html