当在映射中找不到键时map-get()
返回而不是抛出错误的行为是设计使然。null
来自 Sass 的维护者(关于为什么nth()
在请求丢失的元素时会抛出错误但map-get()
没有):
一般来说,当代码做错事时尽早抛出错误是好的。超出范围的列表访问很可能是偶然且不正确的;相比之下,地图中缺少的键更有可能是有目的的。
通过https://github.com/sass/sass/issues/1721
我碰巧不同意nex3(map-get()
应该抛出一个错误,或者至少抛出一个可以被抑制的警告)。您可以通过编写自己的自定义 map-get 函数来获得所需的行为:
@function map-get-strict($map, $key) {
@if map-has-key($map, $key) {
@return map-get($map, $key);
} @else {
@error "ERROR: Specified index does not exist in the mapping";
}
}
$map:
( one: 1
, two: 2
);
.foo {
test1: map-get-strict($map, one); // returns the expected value of `1`
test2: map-get-strict($map, three); // raises an error
}