检查SASS中是否定义了一个variables

正如标题所说,我正试图检查一个variables是否在SASS中定义。 (我使用罗盘,如果有任何不同的区别)

我发现Ruby的等价物是:

defined? foo 

给了在黑暗中的一枪,但它只是给了我错误:

defined": expected "{", was "?

我find了一个解决方法(显然只是在所有情况下定义variables,在这种情况下它实际上更有意义),但我真的想知道这是否有可能的未来

对于Sass 3.3和更高版本

从Sass 3.3开始,有一个variable-exists()函数。 从更新日志 :

  • 现在可以使用这些新函数来确定不同的Sass构造的存在:
    • variable-exists($name)检查variables是否在当前范围内parsing。
    • global-variable-exists($name)检查给定名称的全局variables是否存在。 …

用法示例:

 $some_variable: 5; @if variable-exists(some_variable) { /* I get output to the CSS file */ } @if variable-exists(nonexistent_variable) { /* But I don't */ } 

对于Sass 3.2.x和更早版本(我的原始答案)

我今天遇到了同样的问题:试图检查是否设置了variables,如果是的话添加一个样式,使用混合等。

在读完isset()函数不会被添加到sass之后 ,我使用!default关键字find了一个简单的解决方法:

 @mixin my_mixin() { // Set the variable to false only if it's not already set. $base-color: false !default; // Check the guaranteed-existing variable. If it didn't exist // before calling this mixin/function/whatever, this will // return false. @if $base-color { color: $base-color; } } 

如果false是variables的有效值,则可以使用:

 @mixin my_mixin() { $base-color: null !default; @if $base-color != null { color: $base-color; } }