を破るには、私はしばしばのような状況を参照してください?リターンとスイッチケースとちょうど好奇心
答えて
return
ステートメントが導入される前に、break;
ステートメントがあった可能性があります。したがって、それは冗長になり、除去することができる。実際に
あなたはjslintを通じてそのコードを実行すると、それはこのエラーが表示されます:このアドバイスは、あなた次第です
Unreachable 'break' after 'return'.
留意するかどうか。あなたが特定のスタイルに落ち着く前にいくつかのことを試しているなら、開発中に役立つかもしれません。
これは、一部が主張するかもしれないという代替文体では、より良い習慣です:
var retval = null;
switch (something) {
case 'alice':
retval = something;
break;
// ...
}
return retval;
だから、いくつかの人々(jslint)はヒントのために実際に表記法*エラー* +1を考えます –
@RienNeVaPlusそう、Crockfordはこれらのことを明らかに感じています:) –
場合は、実際にあなたがケースを持って
非常に必要である、あなたはそのケースから分割するか、他他の例も同様にピックアップされている必要があります。
ケースを使用することは、多くの場合、悪い習慣とみなされるため、可能な限り避けてください。
さて、 'return'が呼び出されると、関数は実行を停止します – Plato
なぜ、*使用例が最も頻繁に悪い習慣とみなされるのか説明できますか*?また、なぜあなたのケースの中の '{}'? –
@ user2701974あなたはその質問を誤解しているかもしれないと思います。 'return'の後に' break'を使うことを尋ねています。 'switch..case'は文脈のためのものです。また、 'switch'ブロックは普遍的に悪い習慣とはみなされません。彼らは単に代替案よりも優先度があまり高くありません。 –
switch(casein){
case 1:{
break;
}
case 2:{
break
}
}
break
switch
ブロックのケースを評価停止するJavaScriptを伝えます。コードの実行は、終了の末尾であるswitch
を超えて続きます。サンプルコードのreturn
ステートメントは、実際には、他のcase
ステートメントや、switch
ブロックの後のものを含めて、それを越えたものをさらに防ぎます。
私はすべての場合に習慣によってbreak
声明を書いています。私はbreak
せずにケースを書いたなら、私はコピー可能性があり、将来的には周りのコードのペーストブロックとbreak
文の欠如はそうのようなバグになる:
function whereLivesA(species){
switch(species){
case 'worms':
// Relying on return to prevent further code execution within the switch
// block works but is ~bad~ smelly (according to plato :D)
var habitat = 'dirt'
return (species + ' live in ' + habitat);
case 'bees':
var habitat = 'hive';
break;
}
// Stuff to do after the switch statement (unless you returned already)
var str = species+' live in '+habitat;
return str;
}
console.log('whereLivesA');
console.log(whereLivesA("worms"));
console.log(whereLivesA("bees"));
/* Output:
whereLivesA
worms live in dirt
bees live in hive
*/
function whereLivesB(species){
switch(species){
case "worms":
// what if future code changes remove `return` and don't add `break`?
// return (species + ' live in ' + habitat)
var habitat = 'dirt';
// break;
case "bees":
var habitat = 'hive'
break;
}
// Stuff to do after the switch statement (unless you returned already)
var str = species+' live in '+habitat;
return str;
}
console.log('whereLivesB');
console.log(whereLivesB("bees"));
console.log(whereLivesB("worms"));
/* Output:
whereLivesB
bees live in hive
worms live in hive
*/
function whereLivesCorrect(species){
switch(species){
case "worms":
var habitat = 'dirt';
break;
case "bees":
var habitat = 'hive'
break;
}
// Stuff to do after the switch statement (unless you returned already)
var str = species+' live in '+habitat;
return str;
}
console.log('whereLivesCorrect');
console.log(whereLivesCorrect("bees"));
console.log(whereLivesCorrect("worms"));
/* Output:
whereLivesCorrect
bees live in hive
worms live in dirt
*/
JS初心者:そうしない場合それをファイルに保存してnode filename
を実行したい場合は、F12キーを押してこのスクリプトまたはその他の自己完結型スクリプトをブラウザのコンソールに貼り付けて実行することができます。
node.jsを使用する場合は、コマンドラインでnode
と入力してnode
コンソールを起動し、そこに貼り付けることもできます。
break
キーワードは、文を終了するか、ループを終了して実行を継続しないようにするために使用されます。例えば
:
HTML
what's your age?: <input type="text" id="ageOf"><br>
<input type="submit" onSubmit="postReply();">
<div id="reply"></div>
JS
var userResponse = document.getElementById('ageOf');
var response = document.getElementById('reply');
function postReply() {
switch(ageOf) {
case 1: ageOf<18 {
response.innerHTML = "You are still young.";
break;
}
case 2: ageOf>18 && ageOf<45 {
response.innerHTML = "You are getting up there...";
break;
}
case 3: ageOf >= 45 {
response.innerHTML = "You are over the hill!";
break;
}
}
ので、提出の上、フォームは、それが必要、ユーザーの答えをチェックし、値に応じて、function postReply()
を呼び出す必要がありますそれらのステートメントの1つを返します。
ケースラベルの後の条件は実際に有効な構文ですか? 'ageOf <18'は私には疑わしいですね。また、OPの質問は本当になぜ誰かが 'return'ステートメントの後に' break'ステートメントを使用する理由に関係しています。 – jahroy
私は構文を乱しているかもしれませんが、もっと明確になるように例を提供しようとしていました。 – matt6frey
A)ケースは中括弧で囲まれていません。B)リテラルを 'case'に渡す必要があります。例えば'case 1:ageOf <18 {}'の代わりに 'var s = 'young'を実行します。 if(age> 18){s = 'medium'}; if(age> 45){s = old '} 'そして' switch(s){case' young ':...;ブレーク; case 'medium' ...} ' – Plato
- 1. CPPは、このようなOpenNIリターンで機能O好奇心
- 2. 好奇心 - C++
- 3. コード好奇心
- 4. ちょうど好奇心から〜誰かが私にsetTimeout()の奇妙なことを説明できますか?奇妙によって
- 5. 使用ニューラルネットワークは、方形波機能好奇心のうち
- 6. デフォルトのコンストラクタの好奇心
- 7. let_propertyメソッドの好奇心
- 8. プロジェクトオイラー、#3の好奇心
- 9. Java好奇心のループパフォーマンス
- 10. ちょうどちょっと言われるようにピクセル
- 11. Rubyの正規表現:リターンちょうど試合
- 12. これはなぜ1つのreturn文として機能するのですか?私はちょうど好奇心
- 13. ちょうど好奇心から、Node.compareDocumentPositionが8 + 4 = 12または16 + 2 = 18を返すことは可能ですか?
- 14. ちょうど
- 15. :ちょうど
- 16. ちょっと、ちょっと、私はちょうど "git add"をしましたか?
- 17. VS2010テキストエディタについての好奇心
- 18. PHP「Ternary Like」ブール式の好奇心
- 19. haskellで2のタイプの好奇心ケース
- 20. ボタンはちょうど奇妙な問題を抱えてIE
- 21. nginx gzip_staticは自動的に存在しないgzファイルを作成しませんか?私はちょうど好奇心が強い
- 22. はどのように私はSSEのちょうど初心者ですSSE
- 23. うまくいけば簡単なPythonの好奇心
- 24. モックのコールバックとリターンのどちらを使うのですか?
- 25. WPF FileDragOverイベント:ちょうど
- 26. 私はちょうど
- 27. コールはちょうど
- 28. Fancyboxインラインがちょうど
- 29. ZedGraph:ちょうどドット
- 30. はちょうどFirefoxの
これは_probably_あるだけコピー/貼り付けおよび/またはhaphhazardly将来的にそのコードを修正することから生じるエラーに対して防ぐために。私には良い安全のネットのように見えます。 – jahroy
字下げを考えると、それは単にスタイル上の選択です - 提案された[ブロック]の終わりに 'break'を使用します(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /文/ブロック)。しかし、 'break'は' return'ステートメントの後の到達不能なコードです。だから、何もしません。それでも何も傷つけることはありません。 –