Tag: const

为什么在有顶级常量时,Typescript会出错,或者在Node.js的许多文件中让相同的名字出现

为什么在顶层声明一个const或let导致TS2451错误(见下文)? 我明白,在浏览器中,所有的脚本共享顶级范围,但我正在写所有模块包装的 Node.js。 这种情况下的错误是否与Node.js相关? 如果不是,可以configuration了/configuration我的问题? 为什么var不会发生同样的错误? 是不是在顶层的范围接近var,const和let是相同的? a.ts : let lme = 'A'; const cme = 'A'; var me = 'a'; b.js : let lme = 'A'; const cme = 'A'; var me = 'a'; tsconfig.json : { "compilerOptions": { "module": "commonjs", "target": "es6", "noImplicitAny": false, "sourceMap": false }, "exclude": [ "node_modules" ] } 输出 […]

节点和Chrome中的块范围内的const(V8)

我写了一个nodejs(v4.2.4)应用程序,我遇到了一些奇怪的行为。 function A(number) { this.number = number; } for(var i = 0; i < 3; i++) { const a = new A(i); console.log(a.number); } const b = new A(99); console.log(b.number); 我的直觉,来自Java(和FireFox),是输出应该是 0 1 2 99 但是,Node(和Chrome)给了我 0 0 0 99 我从MSN的调查和了解块范围 ,该var在JavaScript中没有块范围。 进一步来看 , MSN – const将const声明描述为具有块范围: 常量是块范围的,就像使用let语句定义的variables一样。 一个常量的值不能通过重新赋值而改变,并且不能被重新声明。 在这种情况下,我会说Node和Chrome(在这种情况下可能是V8),在块范围中有一些对const的阴暗处理。 但他们也写这个 这个声明创build一个常量,它可以是声明它的函数的全局或局部的。 这是否意味着V8将每个const声明作为一个全局variables,而FireFox创build一个本地variables? 怎么可能这样重要的东西实现如此不同呢?

jslint –edition = latest意外的ES6function。 常量

我试图使用node-jslint https://github.com/reid/node-jslint为了保持我的代码清洁 我在我的nodejs脚本中有一个const,但jslint说这是不是有效的ES6代码 Unexpected ES6 feature. const pdPersonsFilterId = process.argv[2]; // Line 10, Pos 0 这是我在控制台中使用的命令 jslint –edition=latest index.js 根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const可以使用全局常量。 为什么jslint不认为这个代码是有效的?

在javascript中我应该尽可能使用const而不是var?

如果创build一个对象的引用,并且引用不会改变(即使对象将会改变),使用const代替var会更好吗? 例如: const moment = require('moment') exports.getQuotation = function(value) { const quotation = {}; quotation.value = value; quotation.expiryDate = moment().add(7, 'days'); // Do some other stuff with quotation perhaps return quotation; };