JavaScript 加号(+)运算符号

一,对于引用类型对象(我指的是String,Date,Object,Array,Function,Boolean)的+运算符运算过程如下!
1,首先调用此对象的valueOf方法,得到返回数值A
2,然后把此数值A转换成数字,得到的是最终数值

我的测试如下:


代码如下:

function w(s){
document.writeln("<br/>");
document.writeln(s);
document.writeln("<br/>-----------------------------");
}
String.prototype.valueOf=function(){return 1;};
w(+new String("sss"));//输出1
String.prototype.valueOf=function(){return "a";};
w(+new String("sss"));//输出NaN

Date.prototype.valueOf=function(){return 1;};
w(+new Date());//输出1
Date.prototype.valueOf=function(){return "a";};
w(+new Date());//输出NaN

Object.prototype.valueOf=function(){return 1;};
w(+{});//输出1
Object.prototype.valueOf=function(){return "a";};
w(+{});//输出NaN

Array.prototype.valueOf=function(){return 1;};
w(+[]);//输出1
Array.prototype.valueOf=function(){return "a";};
w(+[]);//输出NaN

var s=function(){};
Function.prototype.valueOf=function(){return 1;};
w(+s);//输出1
Function.prototype.valueOf=function(){return "a";};
w(+s);//输出NaN

Boolean.prototype.valueOf=function(){return 1;};
w(+new Boolean());//输出1
Boolean.prototype.valueOf=function(){return "a";};
w(+new Boolean());//输出NaN

二,对于基本数据数据类型,其值转换成数字


代码如下:

w(+5);//输出5
w(+true);//输出1
w(+false);//输出0
w(+"ss");//输出NaN
w(+"111");//输出111

(0)

相关推荐

  • 深入分析下javascript中的[]()+!

    这个东西也不是新鲜玩意了,很久之前就见过,但是一看到那一大坨代码,实在是提不起一点研究的兴趣.无奈今天碰到这样一道题目,只好决定深入研究一下. 关于上面的题目,有必要多说几句.实际上题目并没有要求一定只有[]()+!这六个字符,要求会宽松不少,不过题目描述中并没有说明的很清楚.而且运行环境是node,这样导致并没有window,history,document这些对象.更没有window.atob();和window.atob();这两个函数.总之那道题与我这篇文章并没有多大关系.不过在通过题目

  • javascript去除字符串中所有标点符号和提取纯文本的正则

    用正则表达式除字符串中所有标点符号 复制代码 代码如下: <script language="javascript">   var str="jfkldsjalk,.23@#!$$k~!  @#$%^&*()(_+-=|\{}[]';:,./<>??gg  g~```gf";   str=str.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\

  • 仅用[]()+!等符号就足以实现几乎任意Javascript代码

    请在Firefox下测试 看了下例子: js代码 <script> alert("hi there") </script> 就等价于 <script> ([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[

  • JavaScript中也使用$美元符号来代替document.getElementById

    复制代码 代码如下: function $(id){return document.getElementById(id); 上面的对于新版本的浏览器都是没有问题的,如果使用古老的浏览器,可以使用下面的函数 复制代码 代码如下: function $(objectId) { if(document.getElementById && document.getElementById(objectId)) { // W3C DOM return document.getElementById(o

  • 用JavaScript实现全局替换,解决$等特殊符号的难题[

    感谢海浪提供的正则,原贴请参见: http://www.iecn.net/bbs/view/106503.html 因为要做个模板替换的东西,里面的变量采用${MyName}这种格式的命名方式.在进行全局替换时,遇到两个难点: 1.要么无法替换掉$等特殊符号 2.要么无法忽略大小写 在海浪有帮助下,终于有了最佳实现方式:) 最佳实现方式: 复制代码 代码如下: <script type="text/javascript">  String.prototype.replace

  • 用javascript判断输入数据是否货币并自动添加¥符号的代码

    经典上的一位朋友提出的问题,偶以前正好写过一个股票系统处理过一些货币数据,现在记忆犹在,所以就帮忙解决了.自己也保存再次,以便以后使用. new document [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • JavaScript 加号(+)运算符号

    一,对于引用类型对象(我指的是String,Date,Object,Array,Function,Boolean)的+运算符运算过程如下! 1,首先调用此对象的valueOf方法,得到返回数值A 2,然后把此数值A转换成数字,得到的是最终数值 我的测试如下: 复制代码 代码如下: function w(s){ document.writeln("<br/>"); document.writeln(s); document.writeln("<br/>-

  • PHP常用特殊运算符号和函数总结(php新手入门必看)

    注解符号:         // 单行注解                 多行注解引号的使用         '   ' 单引号,简单字符串,不经任何处理直接拿过来;         " "双引号,php动态处理然后输出,一般用于处理$变量.布尔变量:             一种是true 即 真的;         另一种是false 即假的常见变量:            string          字串(数字\汉字\等等)         integer        

  • JavaScript整除运算函数ceil和floor的区别分析

    本文实例分析了JavaScript整除运算函数ceil和floor的区别.分享给大家供大家参考.具体分析如下: Math.ceil(count / pagesize); //向上整除,如 Math.ceil(4/3)结果为2; Math.floor(count / pagesize); //向下整除,如 Math.floor(4/3)结果为1; 希望本文所述对大家的javascript程序设计有所帮助.

  • Python学习之运算符号

    目录 1.算数运算符: 2.赋值运算符: 3.比较运算符 4.逻辑运算符 5. 成员运算符 总结 大至分为以下5类运算符号 算数运算符 赋值运算符 比较运算符 逻辑运算符 成员运算符 算数运算符 和 赋值运算符 运算是得到真实的结果 比较运算符 逻辑运算符 和 成员运算符 运算得到的 是布尔值 真True 或 假False 1.算数运算符: +          加          -          减          *          乘          /          除

  • python运算符号详细介绍

    目录 比较运算符 布尔运算符 python中的位运算符 运算符的优先级 比较运算符 a,b=10,30 print('a>b吗?',a>b) print('a<b吗?',a<b) print('a<=b吗?',a>=b) print(a is b)#这个比较的是id标识 a>b吗? False a<b吗? True a<=b吗? False False 一个变量有三部分组成:1标识,2类型,3值 比较对象的标识使用is 布尔运算符 print(a==1

  • JavaScript 短路运算的实现

    目录 由来 && 和 || 也叫短路 注意 场景代码 && || 真值短路,短路或 || 经常用来设置函数参数的默认值 发生这次记录的项目代码 结尾 由来 讲一下本篇的由来: 刚刚启一个带有子服务的主服务:base项目上的代码,诉求是这样子的:子服务-端口号:8599需要从主服务-端口号:8001登录进入.主服务base有一个判断工作空间的配置,其他子服务无工作空间的业务,只有子服务-:8599有.正常情况下判断一下当前服务的routeBase,再合并一下基础配置:比如se

  • JavaScript中双符号的运算详解

    一.双波浪号 var i = 5.1; var j = 5.5; console.log(~~i); // 5 console.log(~~j); // 5 作用类似Math.floor. 类似的意思是在处理正数的时候,如果处理负数就它俩就不同了: ~~-5.1 // 5 Math.floor(-5.1) // -6 ~~-5.5 // 5 Math.floor(-5.5) // -6 注: Math.ceil(x) Returns the smallest integer greater th

  • javascript加号"+"的二义性说明

    单个的加号作为运算符在 JavaScript 中有三种作用.它可以表示字符串连接,例如: 复制代码 代码如下: var str = 'hello ' + 'world!'; 或表示数字取正值的一元运算符,例如: 复制代码 代码如下: var n = 10;  var n2 = +n; 或表示数值表达式的求和运算,例如: 复制代码 代码如下: var n = 100;  var nn2 = n + 1; 三种表示法里,字符串连接与数字求和是容易出现二义性的.因为 JavaScript 中对这两种运

  • JavaScript的==运算详解

    大家知道,JavaScript中的==是一种比较复杂运算,它的运算规则很奇怪,很容易让人犯错,从而成为JavaScript中"最糟糕的特性"之一. 在仔细阅读ECMAScript规范的基础上,我画了一张图,我想等你理解了这张图后,会彻底地弄懂关于==运算的一切.同时,我试图通过此文向大家证明==并不是那么糟糕的东西,它很容易掌握,甚至看起来很合理,并没那么糟糕. 先上图: ==运算规则的精确描述在此:The Abstract Equality Comparison Algorithm.

  • 详解JavaScript 浮点数运算的精度问题

    问题描述 在 JavaScript 中整数和浮点数都属于 Number 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此. 所以我们在打印 1.00 这样的浮点数的结果是 1 而非 1.00 .在一些特殊的数值表示中,例如金额,这样看上去有点变扭,但是至少值是正确了.然而要命的是,当浮点数做数学运算的时候,你经常会发现一些问题,举几个例子: // 加法 ===================== // 0.1 + 0.2 = 0.30000000000000004 // 0.7

随机推荐