2008年 08月 09日

strict warning: anonymous function does not always return a value:

これは return が怪しいときにでる警告なんだけど、結構微妙な挙動をする。

// 最初の return が何も値を返していないので、これは警告がでる。
function (a) {
	if (!a) return;
	return 1;
}
// これは警告がでない
function (a) {
	if (!a) return;
	return;
}
// もちろんでない。
function (a) {
	if (!a) return null;
	return 1;
}
// これはとても残念ながら警告がでる
function (a) {
	if (!a) return null;
	return 1;

	function foo () {
	}
}

↑ この形は割と使うのでちょっと困る。けど、次からは先頭に書こう……

// これはでない。
function (a) {
	if (!a) return null;
	return 1;

	function foo () {
	}

	return 1;
}