首页 > 其他分享 >"+new Array(017)" 这段代码输出为 NaN

"+new Array(017)" 这段代码输出为 NaN

时间:2023-11-10 14:58:24浏览次数:35  
标签:.+ console log NaN 017 new Array

首先,前面+是一元运算符,相当于我们说的正负,无运算效果,但是可以将字符串等转为number类型。

此题中017其实是八进制,故而是是Array(15)。

这里相当于对于一个未赋值但是长度为15的数组进行number类型转化,其结果为NaN

八进制的17转为二进制:001111,再转为十进制的15(8+4+2+1)

+运算符作为二元运算符时,有两个功能 数字相加连接字符串 数字相加没啥好说的,连接字符串时,会先把两个参数都转换成字符串再进行连接。
+作为一元运算符时,会将参数转换为数字返回 结果 所以console.log(+new Array(017));输出的是NaN
其他类似的还有-运算符,输出一个转换后的负数

附上一些其他的输出
console.log(+new Array()); //0
console.log(+new Array(0)); //0
console.log(+new Array(1)); //0
console.log(+new Array(2)); //2
2以上都是NaN //NaN
console.log(+[]); //0
console.log(+[1]); //1
console.log(+[1, 2]); //NaN
console.log(+[undefined]); //0
console.log(+[undefined, undefined]); //NaN

一元运算符+
1.+number => 结果为十进制的number
2.+string => 数字样式的字符串 会转换为字符串 否则为NaN
3.+Symbol => 报错
4.+boolean => true:1;false:0
5.+null => 0
6.+undefined => NaN
7.+object 的话会复杂一些,调用valueOf方法得到返回值v,如果v为基础数据类型,结果即为+v,非基础数据类型的话会调用对象的toString方法,得到返回值s,s为基础类型,结果为+s,如果s为非基础类型,报错

Araay的valueOf先调用,得到非基础类型,在调用toString得到字符串,应用+操作符得到NaN

  稀里糊涂的表达式  


  表达式     	      结果     	      原因        
  undefined == null     	      真     	           
  NaN == NaN     	      假     	      两个NaN永远不会相等     
  isNaN("100")     	      假     	      (发生转换)"100"=>100=>假     
  isNaN(null)     	      假     	      (发生转换)null=>0=>假     
  parseInt("1a") === 1     	      真     	      (发生转换)"1a"=>1=>真     
  [] instanceof Array     	      真     	           
  typeot []或 null     	      Object     	      基本数据类型我行,引用数据类型我摆烂,都是obj     
  +new Array(017)     	      NaN     	           
  alert(2<1<3)     	      true     	      2<1会显示false,而false在js中会被转换为0,后面等于0<3,于是true     

标签:.+,console,log,NaN,017,new,Array
From: https://www.cnblogs.com/longmo666/p/17824077.html

相关文章

  • What's new in Pika v3.5.0
    时隔两年,Pika社区正式发布经由社区50多人参与开发并在360生产环境验证可用的v3.5.0版本,新版本在提升性能的同时,也支持了Codis集群部署,BlobDBKV分离,增加Exporter等新特性。我们将详细介绍该版本引入的重要新特性。1去除Rsync在v3.5.0版本之前,Pika使用Rsync工具......
  • [Python]PIL-CVE-2017-8291 复现
    [Python]PIL-CVE-2017-8291复现https://github.com/vulhub/vulhub/tree/master/python/PIL-CVE-2017-8291PIL解析eps文件时存在命令注入。可以反弹shellexp:%!PS-Adobe-3.0EPSF-3.0%%BoundingBox:-0-0100100/size_from10000def/size_step500d......
  • 开发时推荐使用Map map = new HashMap()
    Mapmap=newHashMap();Map是一个接口,HashMap是具体的实现类。由于接口就是多个类的共有规范(里面的抽象方法),是一种引用数据类型,一个抽象的概念,不能被实例化,因此接口需要由具体的类来实现。这条代码指明:由HashMap类来实现接口Map中描述的方法。HashMapmap=newHashMap(......
  • PowerShell 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth o
    问题描述创建PowerShellAzureDurableFunction,执行大量的PowerShell脚本操作AzureResource,遇见了一个非常非常奇怪的问题:Function'Hello1(Activity)'failedwithanerror.Reason:Newtonsoft.Json.JsonReaderException:Thereader'sMaxDepthof64hasbeenexceeded.Pa......
  • 【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReade
    问题描述创建PowerShellAzureDurableFunction,执行大量的PowerShell脚本操作AzureResource,遇见了一个非常非常奇怪的问题:Function'Hello1(Activity)'failedwithanerror.Reason:Newtonsoft.Json.JsonReaderException:Thereader'sMaxDepthof64hasbeenexceeded.......
  • NodeMananger弹性资源池实践
    1.背景在离线集群中,有些冷数据集群专用于存放HDFS数据,很少用来提供计算操作,这些机器的计算资源都浪费了,它们的典型特征是:只启动datanode服务,不启动nodemanager服务。为了提高这些机器的资源利用率,希望在其他计算集群需要资源的时候,resourcemanager可以在冷数据集群中启动NodeMana......
  • new代码
    #include<WinSock2.h>#include<ws2tcpip.h>#include<stdio.h>#include<windows.h>#pragmacomment(lib,"Ws2_32.lib")structhostent*FARgethostbyname( constchar*name);intWSAStartup(WORDwVersionRequeste......
  • var str1=new RegExp("e"); document.write(str1.exec("hello")); 以上代码输出结果为
    varstr1=newRegExp("e");document.write(str1.exec("hello"));以上代码输出结果为eJavaScript高级程序设计上面的原话:RegExp对象的主要方法是exec(),该方法是专门为捕获组而设计的。exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没......
  • 2023-11-08 360浏览器 new Date().getTime() 获取到的时间戳与其它浏览器(chrome、edge
    问题描述:360浏览器newDate().getTime()获取到的时间戳比chrome或者edge要多出一些时间。原因:360浏览器对newDate的兼容性与其它浏览器厂商不同。部分网友认为是在开了极速模式下的360浏览器,会采用webkit的引擎,对含有T字符的日期时间newDate的时候就会相差几个小时,详情请看:h......
  • Nftables整型溢出(CVE-2023-0179)
    前言Netfilter是一个用于Linux操作系统的网络数据包过滤框架,它提供了一种灵活的方式来管理网络数据包的流动。Netfilter允许系统管理员和开发人员控制数据包在Linux内核中的处理方式,以实现网络安全、网络地址转换(NetworkAddressTranslation,NAT)、数据包过滤等功能。漏洞成因漏......