本記事では、SCSS→CSSに変換(コンパイル)する時に「Error: Function finished without @return.」のエラーが出力された時の原因と対処法について解説しています。
HTML/CSSの学習におすすめ書籍
1冊ですべて身につくHTML&CSSとWebデザイン入門講座
メリット
- HTMLとCSSの基本が体系的に学べる
- Webデザインの基本が学べる
- 1つのWebサイトを作りながら学べる
ポチップ
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード
メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次
原因と対処法
このエラーが出る原因は、関数(@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;
}