是否可以将LESS变量设置为给定值(如果尚未定义?)
我似乎只能找到solutions for SASS.
答案 0 :(得分:7)
一个重要的评论:事实证明,对这种技巧的需求经常恰好是一个XY问题(由于误解较少的变量语义)。通常没有实际需要的实际用例(在Less中,总是定义一个默认值(因此它总是存在)被随意覆盖)。因此,在使用下面的技巧之前,请确保它不是something else you want actually。
如果您需要为可以定义的相同范围(即全局或本地)提供此类变量,则非常简单(自v1.4.0起):
@bar: 41; // comment/uncomment to test
.define-bar-if-not-defined() {@bar: 42}
.define-bar-if-not-defined(); // exposes a variable only if it's not already in this scope
#using-global-bar {
global-bar: @bar;
}
#using-local-bar {
@bar: 43; // comment/uncomment to test
.define-bar-if-not-defined();
local-bar: @bar;
}
但是,如果您尝试将此方法用于本地范围中使用的全局/父范围变量,则此方法将不起作用(如果您不确定原始变量的范围时需要通用方法,则可能会出现问题可能来自):
#using-unknown-bar-in-local-scope {
// ... some code ...
.define-bar-if-not-defined(); // won't override local @bar (if any) but always overrides global and parent scope @bar
bar: @bar;
}
在这种情况下,我不知道任何直接的解决方案(例如,没有人可以在保护表达式中使用一些内联javascript黑客攻击)