Last active
July 22, 2016 17:14
-
-
Save lv7777/14175ad2cc0e36a3a30483d2892509d0 to your computer and use it in GitHub Desktop.
default引数のテスト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//firefoxスクラッチパッド | |
var obj; | |
obj={ | |
a:44, | |
d:4 | |
}; | |
//成功する | |
(function defaulttest({a,b}=obj){ | |
console.log(a) | |
})() | |
//この場合bはobjの中にないからundefinedになる。 | |
//また、重要事項としてこのa,bはオブジェクトではなく単体の変数となる。 | |
//というかそもそもこいつ`{a,b}=obj)`は分割代入とのコンボ。これ自体はdefault引数ではない。 | |
//バグ発見 | |
//undifになる例 | |
function def(){ | |
console.log(`a is !!!!`); | |
return "yyyyyyyyyyy"; | |
} | |
function defaulttest(a=def()){ | |
console.log(a) | |
} | |
defaulttest() | |
//成功例 | |
function def(){ | |
//console.log(`a is !!!!`); | |
return "yyyyyyyyyyy"; | |
} | |
function defaulttest(a=def()){ | |
return a | |
} | |
defaulttest() | |
//仮説としてはdefを非同期実行してしまっているからちゃんと入ってない。と思ったけど違った.普通にできた。 | |
function gaibu(a = 114514,b=a+114514){ | |
// var a=10; | |
// return b; | |
console.log(`a is ${a}, b is ${b}`) | |
} | |
gaibu() | |
//これは普通にできる。 | |
//default引数は前の引数の値を使用できる。 | |
//bug this example was not running. | |
//undefind was showed, and | |
function go(ing){ | |
return function(ing){ | |
console.log(`goisgod ${ing}`); | |
} | |
} | |
function gaibu(a = 114514,b=go(a)){ | |
// var a=10; | |
return b; | |
} | |
var a=gaibu();a(); | |
///////////////////////////////////////////////////////// | |
var kansutekiyou=(c="c",cpp=c+"++",cs=cpp+"++")=>{ | |
return [c,cpp,cs]; | |
}; | |
var kae=kansutekiyou("d","d--").map(function(i){ | |
console.log(i); | |
return `${i}にはラムダ式がない。` | |
}) | |
/////////////////////////分配配列の場合default引数側も実際に存在する引数側も渡す引数側もobjectにする必要がある。 | |
//var kansutekiyou=({c}={c:"c98"}でもできるんだけどこれはes6のなんだっけ?エンハンスobjectだっけ?の機能 | |
var kansutekiyou=({c:c}={c:"c98"})=>{ | |
return [c]; | |
}; | |
// var kae=kansutekiyou("d言語").map(function(i){ | |
// console.log(i); | |
// return `${i}にはラムダ式がない。` | |
// }) | |
console.log(kansutekiyou({c:"d"})); | |
var kansutekiyou=({c:c,d:c,e:c}={c:"c98"})=>{ | |
//とすると | |
/* | |
Exception: SyntaxError: duplicate argument names not allowed in this context | |
@Scratchpad/4:20 | |
*/ | |
//となった |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment