当前位置:   jquery > 正文

为什么在严格模式下不允许使用八进制数字文字(什么是变通方法?)

javascript,octal,ecmascript-5,strict-mode,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

为什么在JavaScript严格模式下不允许使用八进制数字文字?有什么危害?

"use strict";
var x = 010; //Uncaught SyntaxError: Octal literals are not allowed in strict mode.

Check browser console for errors

如果开发人员需要使用Octals(可能会错误地更改数字含义),是否有解决方法?



1> Amit..:

这个问题的"为什么"部分并不是真正的问题.

至于"如何",我的头顶......

"use strict";
var x = parseInt('010', 8);
document.write(x);


2> Patrick Robe..:

不允许使用八进制文字,因为禁止它们会阻止程序员在脚本中使用前导零作为填充.例如,请查看以下代码段:

var eight = 0008,
    nine = 00009,
    ten = 000010,
    eleven = 011;

console.log(eight, nine, ten, eleven);


3> 小智..:

如今,有了对ES6的大量浏览器支持,你可以这样写:

const NINE = 0o11; // octal
const TEN = 0b1010; // binary
const SEVENTEEN = 0x11; // hexa



4> gsnedders..:

为什么在javascript严格模式下不允许使用八进制数字文字?有什么危害?

JS中的八进制一直是标准的非标准扩展(在ES5中引入了严格模式,它们在附录B中,它是大多数实现支持的非标准功能的集合:除了它定义了octals in a方式与网站要求的方式不兼容),严格模式试图禁止所有非标准扩展.关于它们为什么从未标准化的"原因"是一个明显的相关问题,而我并不知道.

如果开发人员需要使用Octals(可能会错误地改变数字的含义),是否有解决方法?

正如@Amit回答的那样,parseInt第二个参数为8仍然在严格模式下工作.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13671
推荐阅读
相关标签
  

闽ICP备14008679号