嗨,我想知道是否可以使变量的行为如下:

var someFlag  = true;
var someWidth = (()=>(someFlag) ? 16 : 12)();

console.log(someWidth) // 16

someFlag = false;

console.log(someWidth) // would be nice if it was 12
// right now it still prints 16


这样的事情可能吗?我也知道someWidth可能是一个函数,其想法是我有很多代码需要重构,所以我不想做someWidth();

最佳答案

描述对象属性的好方法是here



var someFlag  = true;
Object.defineProperty(window, 'someWidth', {

  get:()=>someFlag ? 16 : 12

})
console.log(someWidth) // 16

someFlag = false;
console.log(someWidth) // 12





我认为拥有这样的全局变量不是一个好主意。您可以尝试创建自己的对象吗?

关于javascript - Javascript使变量成为每次被引用时都会自行调用的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46417792/

10-10 01:08