console.log(12.toString())为啥会报错呢?

先看2段代码

1、

let a = 12;
console.log(a.toString()) //12

2、

console.log(12.toString()); //Uncaught SyntaxError: Invalid or unexpected token

这是为什么?搭眼一看都是一样的呀?是否有这个疑惑?接着往下看,下面来介绍一下:

       在JavaScript 规范中规定的数字直接量可以支持四种写法:十进制,二进制整数,八进制整数和十六进制整数。

      十进制的 Number 可以带小数,小数点前后部分都可以省略,但是不能同时省略,我们看几个例子:

let num1 = 1;
let num2 = .01;
let num3 = 1.01
let num4 = 1.

这都是合法的数字直接量。这里就有一个问题,也是我们标题提出的问题,我们看一段代码;

console.log(12.toString()); //Uncaught SyntaxError: Invalid or unexpected token

这时候12. 会被当做省略了小数点后面部分的数字而看成一个整体就是上图中的num4形式,所以我们要想让点单独成为一个 token,就要加入空格,这样就可以了

console.log(12 .toString()); //12

相信你看着这,应该明白原因了,具体原理请看js的编译原理

原创不易,自由转载,保留出处!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值