本記事では、SCSS→CSSに変換(コンパイル)する時に「Error: Function finished without @return.」のエラーが出力された時の原因と対処法について解説しています。
HTML/CSSの学習におすすめ参考書
1冊ですべて身につくHTML&CSSとWebデザイン入門講座
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!
原因と対処法
このエラーが出る原因は、関数(@function)に@returnを設定していないことです。
例えば、以下の関数は同様のエラーを出力します。
@function double($val) {
$val: $val * 2;
}
.sample {
font-size: double(10px);
}
JavaScriptなどのプログラミング言語では、必ずreturnで戻り値を返さなければいけないというルールはありません。戻り値を返さず処理だけを実行する関数を書くことも出来ます。
しかし、SCSSでは@functionと@returnは必ずセットで使用されることがルールとして定められているため、@returnを書かなければ間違いの記述でエラーが出力されます。
先ほど紹介したコードを正しい記述に書き換えると以下のようになります。
@function double($val) {
$val: $val * 2;
@return $val;
}