在SASS中是否有等效的isset或null合并运算符?

时间:2014-10-09 19:23:47

标签: variables sass null-coalescing

我想设置一个变量,只要它没有被设置。

SO ......

_layout.scss

$page-width: 1100px;

但是,在我的_module.scss文件中,我不想依赖_layout.scss

我想做这样的事情:

$page-width = $page-width ?? 960px; 
// If $page-width exists, use it, otherwise set it to a default of 960px;

我喜欢SASS 3.2中最适合的作品。我在这里找到了解决方案,否则:

global-variable-exists is triggering errors in Sass

3 个答案:

答案 0 :(得分:5)

我相信你正在寻找variable defaults,并且SASS支持他们。变量默认值允许您分配变量(如果尚未使用值{}处的!分配变量。

在您的情况下,您可以在_layout.css

中使用此功能
$page-width: 1100px;

然后在_module.scss你可以

$page-width: 960px !default;

这大致相当于说assign $page-width to 960px unless $page-width is already defined

查看default variables上的文档。

答案 1 :(得分:0)

是的。从版本3.1.2开始,有一个document.body.style.backgroundColor = "#e34233";函数,该函数带有三个参数。检查条件,并根据结果返回两个值:

if

当您不想在代码的其他地方设置默认值时,这可能很有用。

答案 2 :(得分:0)

Mohamad 的答案是您的特定代码示例的最佳答案,但值得一提的是,Sass or 运算符有时可以用作 {{1 }} 运算符:

??

我说“有时”,因为只有定义了您的 $my-property: $uncertain-variable or $backup-value; 才好。

这比某些语言(咳咳 JavaScript)更可靠,因为正如 Sass docs 指出的那样:

<块引用>

有些语言认为比 $uncertain-variablefalse 更多的值是假的。 Sass 不是这些语言之一!空字符串、空列表和数字 null 在 Sass 中都是真实的。

我想您是否想以这种方式使用 0 是个人喜好问题。虽然它非常简洁,但您可能会争辩说 or 语句(或 @if 函数)更为明确。