SCSS

Error: Function finished without @return.の原因と対処法

本記事では、SCSS→CSSに変換(コンパイル)する時に「Error: Function finished without @return.」のエラーが出力された時の原因と対処法について解説しています。

HTML/CSSの学習におすすめ参考書
1冊ですべて身につくHTML&CSSとWebデザイン入門講座

本書情報
著者Mana
発売日2019/3/16
ページ数280ページ
Kindle版
レビュー
(Amazon)
(2,167件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
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;
}

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村