すべてのJavaScriptプログラマーが知っておくべきことは何ですか?[閉まっている]


368

「私はJavaScriptを知っています」と言えるように、すべてのJavaScriptプログラマーが知っておくべき一連のことはありますか?

回答:


590

jQueryではありません。YUIじゃない。ない(等)

フレームワークは便利かもしれませんが、JavaScriptとDOMが実際にどのように機能するかについて、見苦しい詳細を隠していることがよくあります。あなたが「JavaScriptを知っている」と言えるようになることが目的である場合、フレームワークに多くの時間を費やすことはそれとは反対です。

JavaScriptの機能の一部を以下に示します。JavaScriptの機能を理解するために知っておく必要があるのですが、すぐにわかりません。

  • これobject.propobject['prop']同じことです(あなたがストップ使用してくださいすることができeval、感謝し)。オブジェクトのプロパティは常に(配列の場合でも)文字列です。for... inのためである(そして何それはないです)。

  • プロパティスニッフィング; 何であるかundefined(そしてそれがなぜにおいがするか); あまり知られていないように見えるin演算子が有益で、typeof/ undefinedchecks と異なる理由; hasOwnProperty; の目的delete

  • そのNumberデータ型は本当にフロートです。floatを使用する言語に依存しない問題。parseInt8進トラップを回避します。

  • ネストされた関数スコープ。var偶発的なグローバルを回避したいスコープで使用する必要性。スコープをクロージャに使用する方法。閉鎖ループの問題

  • グローバル変数とwindowプロパティがどのように衝突するか。どのようにグローバル変数とドキュメント要素がIEで衝突するべきではなく衝突するか。varこれを回避するためにグローバルスコープでも使用する必要性。

  • functionステートメントが、その前のコードの前に定義を「巻き上げる」ように機能する方法。関数ステートメントと関数式の違い。名前付き関数式を使用すべきではない理由。

  • コンストラクタがどのように機能するか、prototypeプロパティとnew演算子は実際に機能します。これを利用して実際に必要な通常のクラス/サブクラス/インスタンスシステムを作成する方法。プロトタイピングの代わりにクロージャベースのオブジェクトを使用したい場合。(ほとんどのJSチュートリアルの資料は、これについてはひどいものです。頭の中でまっすぐに理解するのに何年もかかりました。)

  • thisバインドではなく、呼び出し時にどのように決定されるか。その結果、メソッドの受け渡し他の言語で期待するように機能しない。どのようにクロージャをFunction#bind使用するか、それを回避するために使用できるか。

  • その他のECMAScript Fifth Editionの機能indexOfforEachおよびの関数型プログラミングメソッドArray。古いブラウザを修正して使用できるようにする方法。インラインの無名関数式でそれらを使用して、コンパクトで読みやすいコードを取得します。

  • ブラウザとユーザーコード間の制御の流れ。同期および非同期の実行。コントロールのフロー内で発生するイベント(フォーカスなど)と、コントロールが戻ったときに発生するイベントおよびタイムアウト。どうやら同期が必要な組み込み関数のようなものを呼び出すと、alert結局は悲惨な再入可能性が引き起こされる可能性があります。

  • クロスウィンドウスクリプティングがどのように影響するかinstanceof。クロスウィンドウスクリプティングが異なるドキュメント間の制御フローにどのように影響するか。どのようにpostMessageうまくいけば、この問題を解決します。

最後の2つの項目については、この回答を参照してください。

何よりも、JavaScriptを批判的に表示し、それが歴史的な理由で不完全な言語(ほとんどの言語よりもさらに多い)であることを認め、その最悪の問題を回避する必要があります。この面でのクロックフォードの作品は間違いなく読む価値があります(「良い部分」について彼に100%同意するわけではありませんが)。


80
ああ、ようやく思慮深く、徹底した答え。+10ができれば、そうします。フレームワークを知っていても、JavaScriptを効果的にプログラミングできるとは限りません。
Tim Down

6
よく考えられた答えに感謝します。フレームワークを使用することは、それがどのように行われているのかを知っている場合、本当に有益である可能性があることを付け加えたいと思います。フレームワークに頼る前に、自分でこれらのことを行うことを学ぶ必要があります。
Javier Parra

4
@Daniel:実際にはそうでthisはなく、どの方法でアクセスしてもバインドされます。試してください:var o= {b: function(){alert(this===o);}};、次にo['b']();-> true。そして、あなたが本当に気紛れになりたいなら、(o['b'])()-> true、しかし(c= o['b'])()-> false、そしてMozillaだけで(true? o['b'] : null)()-> true。W、T、そして確かにF.
ボビンス

7
なんてこった!ブラウザーの癖をすべて知っていると、JSコーダーが改善されるわけではありません。仲間の間でストリートクレディが増えるかもしれません...抽象化は人生を楽にし、JSの不可欠な部分です。フレームワークを知っていると、長い道のりを行っていない人よりも優れたJSコーダーができます。
Vince Panuccio 2010

19
サイコ卿:この回答のいずれもDOMについて言及していないことに注意してください。フレームワークは、ここで言及されていることからユーザーを保護することはできません。このことは、フレームワークを使用しているかどうかに関係なく、ブラウザのスクリプトを作成する人にとって重要です。
Tim Down

248

無効にできること。


12
+1、「非常に難しく、とにかく誰もがJavaScriptを有効にしている」ため、優雅な低下のごく基本的なことさえ気にしないページにうんざりしています。
wasatz 2010

27
+1。JavaScriptなしでは機能しないページは、JSが有効になっていても壊れやすいページです。
ボビンス、2013

9
@iconiK私は行って、セキュリティ上の理由でJavaScriptをグローバルに無効にしたすべての政府のクライアントに、彼らがすべての非難であることを伝えますか?
graphicdivine 2010

16
-1これはトピック外であり、言語としてのjavascriptについて知ることとは何の関係もありません。Webアプリを設計するときに考慮することは良いことですが、それでもこのスレッドに属する答えではありません。
TM。

24
@TM、いいえ、それは本当に重要な考慮事項です。データベースに値を挿入する前に値をテストするか、豪華なJavaScriptポップアップボックスを介してWebサイトにログインする唯一の方法があるので、これはあなたの頭の前にあるはずです。そういえば……何かチェックしに行かなきゃ。
エリザベスバックウォルター

75

CrockfordのJavascript:The Good Partsで記述されたものを理解することは、人がきちんとしたJSプログラマーであるというかなり良い仮定です。

JQueryのような優れたライブラリの使用方法をほとんど知っていても、Javascriptの隠れた部分を知らない場合があります。

もう1つの注意点は、さまざまなブラウザーのデバッグツールです。JSプログラマーは、さまざまなブラウザーでコードをデバッグする方法を知っている必要があります。

ああ!そして、JSLintを知ることはあなたの気持ちを完全に傷つけるでしょう!!


+1その本のことを忘れないでください。
David

8
また、developer.yahoo.com / yui / theaterには、有益で洞察に満ちたCrockfordのビデオがたくさんあります。crockfordfacts.comに言及する必要はないと思います:-)
ndim

+1-デバッグサポートが埋め込まれていないフレームワーク( Siebel、 PDF)向けにJSを開発しようとすると、JSLintは素晴らしいことです。
J.ポルファー2010

49

真のJavaScript忍者になりたい場合は、Perfectionのすべての質問に対する答えがJavaScriptクイズを殺すことを知っている必要があります。

食欲をそそる例:

(function f(f){ 
  return typeof f(); 
})(function(){ return 1; });

この式は何を返しますか?

  • "数"
  • "未定義"
  • "関数"
  • エラー

10
私の答えに表情を与える:codingspot.com/2010/02/...
CMS

@CMSとても良いです!最初は実際に大丈夫でしたか、これにはいくつかの調査が含まれていますか?
Skilldrick 2010

7
スキルドリック:私はそれらすべてを最初に手に入れたと思います、私はECMA-262標準の頻繁な読者です(わかっています、私は奇抜です:-)
CMS

46

あなたが知らない場合、あなたはJavaScriptを知らない:

  1. 閉鎖
  2. プロトタイプベースの継承
  3. モジュールパターン
  4. W3C-DOM
  5. イベントの仕組み

私はこの答えが本当に好きです。知識の暗い部分を見つけるのに役立ちます。このチェックリストでは、イベントがまだ少しわかりにくいだけです(モジュールパターンが「グローバルネームスペースを上書きしない」を意味し、スコープとvar演算子が含まれている場合)。
silviot 2010

11
私はそれを主張しYou don't know JavaScript if you don't know The W3C-DOMます。2つは異なります。
gblazex 2010年

37

..そのjavascriptはjavaではありません:)

ウェブサイトの開発を始めた多くの人が、javascriptは単なるjavaだと言っています。


+1この点はかなり基本的です!
amelvin

71
「カーペットは車にあるように、JavaScriptはJavaにあります。」
ジョシュリー

1
Javascriptは、C#がCに似ているのとほぼ同じようにJavaに似ています。
Earlz 2010

4
Google Web Toolkitを使用しない限り
Afriza N. Arief 2010

興味深いことに、Microsoftは、java.util.Dateに基づいて、IE3用のJScriptのY2k準拠の日付関数をベースにしました。
ベヤードランデル

27
  1. 少なくとも1つのJavascriptライブラリ(Jquery、Prototypeなど)をよく理解してください。

  2. 主要なブラウザー(MSIE 7-8、Firefox、Chrome、Safari)のデバッグツールの使用方法を学ぶ

  3. 業界の最新情報:Douglas CrockfordのWebサイトは宝の山ですが、Ajaxian.comは、JavaScriptの新しい、興味深い、または奇妙なアイデアを追いかけるのに適したブログです。他にも多くのリソースがありますが、それらは私を最も助けてくれたものです。


真剣に、なぜ反対票か。
デビッド

+1あまりにも多くの戦術的投票、真剣に人々は真面目に上手に自分の答えを押し上げようとするのではなく、良い答えを賛成すべきです。
amelvin

1
@Murali VP私は、ブラウザーのコンテキストでJavaScriptを「知っている」ことを前提にしています。hello worldに相当するものの直後に、インタープリターごとに異なる可能性がある論理エラーとランタイムエラーを把握する必要があります。デバッグ方法がわからなければ、私はどの言語も知っているとは主張しません。フレームワーク要件に関しては、Javascriptは初期のCのようなものであり、微妙な実装の違いが不注意を妨害します。jQueryとprototypejsはこれらの違いを理解し、JavaScriptを信頼性の高いツールにし、API呼び出しを追加して生産性を向上させます。(続き)
David

@Murali VP公平に言うと、私が90年代にJavascriptを使い始めて以来、JavaScriptは長い道のりを歩んできました。Microsoftを除いて、他のJavascriptインタープリターは仕様に従い、公正にプレーするために素晴らしい仕事をしました。
David

@David、素晴らしい説明ありがとうございます。あなたに同意する傾向があります。
Murali副社長、

24

JavaScript オブジェクトとファーストクラスシチズンコールバックとして機能し、イベントJQueryを忘れないようにします


20
ああjQuery、誇大広告のJSフレームワーク!
Murali副社長


23

ローカルであると宣言されていない限り、変数はグローバルです!!

悪い(DoSomething()は10回しか呼び出されません):

function CountToTen()
{
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

良い(意図的にDoSomething()が50回呼び出されます):

function CountToTen()
{
  var i;
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  var i;
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

2
私もこれを考えたことはありません。非常に良い点です。
オリーブ

6
私はfor (var i=0;自分のすべてのループの習慣を身につけようとします
ghoppe

2
var変数のスコープのサイズについてだまされないため、Crockfordは関数の先頭にを置くことを好みます。同じ関数の2つの別々のループにいるjs2-mode場合var i、文句を言うforでしょう。これは、2つの別々の変数があると考え、そうではないことを示唆しているためです。それにもかかわらず、私はvarそれらを初期化する場所から分離しないように努めています。
Kragen Javier Sitaker

スコープされていなくてもかまいません。変数が使用される前に20行宣言されていることに我慢できない
ファンメンデス


8

Javascriptは元々LiveScriptと呼ばれており、JavaとJavascriptが関連しているため(関連していないため)、マーケティングの目的で「Java」接頭辞が付けられていたことを知るため。

ああ、David Flanaganの「Javascript:The Definitive Guide」のすべてのバージョンを所有している(この情報は2ページにあります)。

...そして、Jqueryのようなものが苦痛を取り除く前に、Internet Explorer 4のdocument.all []とNetscape Navigator 4のdocument.layers []を難読化しようとして以前に行ったことのある人たちに感謝します。

編集:

@Kinopikoが指摘したように、JavaScriptは当初プロジェクトMochaと呼ばれていました(一部のソースではProject LiveWire とも呼ばれていました)が、Javaプレフィックスが採用される前に(Brendan Eichによって作成された)言語がLiveScriptとしてリリースされる予定であったことは一般に受け入れられています1996年初頭にリリース。


ダグラス・クロックフォードから乳首ビットを選ぶための+1!
ガテ

1
JavaScriptはもともとモカと呼ばれていたと思いますか?

1
@Kinopiko David Flanaghanによる私の「Javascript:The Definitive Guide」3編(1998年6月)の本によれば、LiveScriptと呼ばれていました。
amelvin

@gath何かを学ぶ日は良い日です!
amelvin 2010

1
@amelvin毎日が学校の日です。
Sponsz大佐2010

8

「私はJavaScriptを知っています」と言うには、次のことに注意する必要があります。

  1. JavaScriptは良いですが、DOMが問題です
  2. クロスブラウザの問題はあなたを狂わせることができます
  3. コードが4つ以上の優れたブラウザでテストされていない限り、バグがないとは言えません
  4. 閉鎖 ..............知っている必要があります
  5. そのプロトタイプベース ...........素敵な1つこれを学ぶのは楽しい
  6. デバッガキーワード.....危機的状況に役立ちます

素敵なリスト、かなりスリム。「4」の良いブラウザで笑いました。私は、数7は、バージョン8の下にIEブラウザの健全な憎悪すべきだと思います:)
シャム

@ Shyam、IE8の健全な憎しみを持たせてはならないと思いますか?IE8にはまだ問題があります...その時点ではIE8にのみ存在する問題です。
Tracker1

@ Tracker1:常に問題があります。そして、私が触れていないブラウザーをたたくのは、まあ、それは少し不公平です。私が4つの優れたブラウザを笑ったのはそのためです。「Firefox、Chrome、Safari、Opera」だけが私が開発するブラウザです。IEのハッキングをやめ、JavaScriptが無効にされているかのように、Fisher Priceコードを実行させるだけです。
Shyam 2010

7

そのJavaScriptは、あなたが思っているよりも他の言語とははるかに異なります。このすばらしいGoogle Tech Talkを見て、印象をつかんでくださいhttp : //www.youtube.com/watch?v=hQVTIJBZook


1
+1これは、JavaScriptの吸引を停止する方法の優れた説明です。これらは後で見る価値があります:yuiblog.com/crockford
大佐

別の優れたCrockfodプレゼンテーション(「JavaScriptプログラミング言語」4部)video.yahoo.com/watch/111593/1710507
Alex K.

7

すべてのJavaScriptコーダーが知っておくべきことは何ですか?

では、2クリックであなたの努力を止めることができます。したがって、可能であればフォールバックを提供します。


Webブラウザーをアンインストールすることもできます。最近JavaScriptを無効にしている人はほとんどいません。おそらくウェブを閲覧する必要はありません。これの唯一の例外は、Webクローラーが公開コンテンツにアクセスする必要があり、JSに依存してアクセスできないことです。
Jean Vincent

私はものにアクセスするための非JSの方法を提供することにもっと興味があります。JSを無効にして閲覧したり、スクリーンリーダーを使用したりする人を知っています。彼らは常にJSをうまく使うとは限りません。単純なログインページがフォールバックなしでajaxを介して送信されるサイトを見たことがあります。JSなし、ログインなし。このサイトは、フォームを送信するためだけに、JSをあまり利用していません。
Khainestar 2011

私が意図的にJSを意図的に無効にするユーザーは、今日では非常にまれであり、確かに10年前よりはるかに少ないと思います。これが、どうしてもサイトにアクセスしたくないユーザーのためにサイトを2度設計する必要がある理由が理解できない理由です。あなたの例では、彼らはログインできません、それで何ですか?もう1つは、JSなしで最新のサイトをデザインする方法はまったくないということです。
Jean Vincent


6

Array、Number、String、Date、およびObjectを効果的に使用できるかどうか、JavaScriptを知っています。数学と正規表現のプラスポイント。関数を記述して変数を使用できるようにする必要があります(正しいスコープで、つまりオブジェクトの「メソッド」として)。

クロージャー、贅沢な関数構文、blablaについてのコメントがいくつかあります。これらすべては、この質問にはまったく関係ありません。それは、100mダッシュを11秒未満で走らせることができれば、ランナーだと言っているようなものです。

私は、JavaScriptに習熟するまでに数週間かかると言います。その後、専門家や忍者などになるには、何十年もの本と何千ものプログラミング行が必要です。

しかし、それは問題ではありませんでした。

DOMはJavaScriptの一部ではなく、jQueryでもありません。ですから、どちらも同じように問題には関係ないと思います。


1
あなたがそれを気にしてもしなくても、閉鎖はそこにあります。それは強力ですが、簡単に誤用される可能性があります。あなたはそれがどのように機能するのかわからなければ、あなたはその言語を知りません。
gblazex 2010年

別に害の閉鎖から、特に私たちの真の友人のInternet Explorer 6で、メモリリークのように、発生する可能性があります
マルセルKorpel


4

上記をすべて読んだ後、jQueryのようなフレームワークを使用してJavascriptを学ぶのもまったく問題ありません。真実は、多くの人がJSを最初に取り上げた最初の方法です。その点で恥はありません。


4

配列lengthmethodは配列の項目の数ではなく、最高のインデックスです。アイテムが設定されている場合でもundefined

var a = [];
a.length;   // === 0
a[10];      // === undefined
a[10] = undefined;
a.length;   // === 11
a.pop();    // === undefined
a.length;   // === 10

この動作は、言語設計のバグとほとんど区別できません。


3

jQueryは私の最高の推奨事項です。コード自体だけでなく、イディオム、スタイル、背後にある考え方がエミュレーションに最もふさわしいものです。


2
+1 Jqueryは、私のJavaScriptの使用に革命をもたらしました。
amelvin 2010

1
良い議論の概要。拡大することはそれを素晴らしい答えにするでしょう。
ドナルフェロー

jQueryを使用すると、手続き型モードになります。私はむしろOO JS
Juan Mendes

オブジェクト指向には魔法のようなものはありません。John Resigによって設計され、他の何千人もの開発者が使用しているフレームワークを、モードに関係なく、あなたや私が書くものよりも使用したいと思います。
duffymo 2012年

3

そのjavascriptは、世界で最も広く展開されている言語です。(多分)


8
最も広く展開されているネイティブ自然言語はマンダリンです。それがあなたを北京語の話者にすることを知っていますか?その事実を知ることは、あなたの言語の理解と関係があるのでしょうか?
Zano

11
世界で最も広く展開されている言語は、細胞内のタンパク質合成を制御するDNAの遺伝暗号です。
Ernelli、2010年

マンダリンとDNAの前に、愛の言語を最初に展開する必要があります。つまり、それが勝利します。バム!
クリストファー

3

言語を本当によく学び、そのさまざまな癖を理解することは、何年にもわたる経験から生まれます。あなたがより良いプログラマーになりたいのであれば、私は、デザインパターン、それらをいつどのように使用するのか、そして/またはそれを実現せずに使用しているときさえ理解することを言うでしょう。技術アーキテクチャとユーザーエクスペリエンス。

(JavaScript)言語を知っているということは、任意のフレームワークを選択して自由に使用できることを意味します。あなたは必然的にソースコードに飛び込む必要があります、そしてあなたが知っているすべてが構文またはフレームワークまたは2または3であるならば、あなたは遠くに行くことはありません。つまり、いくつかの異なるフレームワークのソースコードにアクセスすることは、おそらくJavaScriptの使用方法を確認するための最良の方法の1つです。FirebugまたはWeb Inspectorでコードをステップ実行し、JavaScriptドキュメント、特にMozillaとWebkitのドキュメントをチェックして、見ているものについてさらに理解を深めることで混乱します。

オブジェクト指向プログラミングと関数型プログラミングの違いを理解すると、JavaScriptは2つの魅力的な組み合わせであり、キラーコードベースと素晴らしいアプリケーションを作成するために両方をいつ、どのように使用するかは、より優れたJavaScriptプログラマーになります。

いくつかの本、特にJavaScriptの何が良いかについての彼の意見を提示しているだけのCrockfordの「良い部分」を読んでいるだけで、JavaScriptのほとんどの素晴らしい部分をスキップすると、間違った足がかりになります。

一方、Thomas Fuchsのような誰かによって書かれたコードをチェックアウトすると、驚くほど効率的なJavaScriptを書くことの力について、より多くの洞察が得られます。

いくつかの落とし穴やWTFを覚えようとしても、あまり役に立たないので、ライブラリ/フレームワークのコード、特に役立つコメントが付いたコードをコーディングしてステップスルーすると、それらが特定のものを使用した理由を確認できます。プロパティ/値であり、特定のオペランドと演算子を使用するのが適切な理由と理由は他にありません。これは、フレームワークの人々が使用するコードにすべて含まれています。例で学ぶよりも優れていますか?:^)


クロックフォードを崇拝しないための+1。私は教会での説教者と同じように彼の意見を扱います。私は彼らの言うことを尊重しますが、すべてを一粒の塩で飲みます。
フアンメンデス

2

JavaScriptでは、パフォーマンスが重要です。

コードを最適化するインテリジェントなコンパイラはないので、JavaScriptコードを記述している間は、C#、Javaなどの言語よりも注意が必要です...


1
実際、ブラウザコンパイラはコードの最適化に非常に優れています。
エドゥアルド

1
Chromeは、この答えは、単に新しいJSエンジンのすべてと真実ではありません、あなたのコードを最適化するには非常にスマートです
フアン・メンデス

IE、モバイルブラウザはどうですか?
caltuntas



0
  1. with()線のあるところとないところ、どこに線を引くかという生活があることを知る。
  2. throwステートメントを使用してカスタムエラーを作成し、JavaScriptランタイムを意図的に停止できます。

-1

JavaScriptは、returnキーワードとreturnステートメントを次のコードのような改行文字で区切ることをサポートしていません(またはjsFiddleページで試してください

function foo()
{
    return
    {
        bar: 'something'
    };
}

$(function()
{
    document.write(foo());
});

JavaScriptがデフォルトのスタイルのJavaScriptと比較すると、非常に複雑なJavaScriptソースコードを読みやすくなるため、JavaScriptがこのスタイルをサポートしない理由がわかりません。

PS。私はJavaScriptを6年近く書いています。しかし、私は次の関数を実行しようとしたときに自分でこのバグを見つけました。常に未定義を返します。デバッガーを使用してこの関数にステップインすると、すべて正常に動作します。私の人生で最悪のプログラミングバグになると思います。

function JqGridInlineEditor_GenerateTool(cellvalue, options, rowObject, disableEdit, disableDelete)
{
    return 
        (!disableEdit ? '<a class="button edit" href="javascript: void(0);" onclick="JqGridInlineEditor_EditRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Edit.gif'), 'Click here to Edit or \nDouble-click row to edit.') : '') +
        (!disableDelete ? '<a class="button delete" href="javascript: void(0);" onclick="JqGridInlineEditor_DeleteRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Delete.png'), 'Click here to Delete or \nSelect row and then press Delete') : '') +
        (!disableEdit ? '<a class="button save" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_SaveRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Save.png'), 'Click here to Save or \nPress Enter') : '') +
        (!disableEdit ? '<a class="button cancel" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_RestoreRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Cancel.png'), 'Click here to Cancel or \nPress Esc') : '');
}

3
JavaScriptでは、通常、改行文字はステートメントの区切り文字として機能します。ステートメントが終了した(例:)ことが不可能である場合のみvar foo = "bar" +、パーサーが読み取ります。
Marcel Korpel、2010年


2
@Marcel —それは正確には当てはまりません。たとえば、2行var foo = 5あり-1;、それぞれが有効なステートメントであるにもかかわらず、fooは4に設定されます。
Ben Blank

4
これは、言語がセミコロンを自動的に挿入してステートメントを分離するためです。これは言語の落とし穴です。returnステートメントは次のように変換されます:return; {key:value、}この問題を回避するには、次のように、セミコロンを同じ行に配置する方法を採用する必要があります。return {key:value}; また、自分でお願いしてDouglas Crockford:The Good Partsのコピーを入手してください。これは本ではっきりと述べられています。
Rajat

@Ben –興味深いケースです。指摘していただきありがとうございます。つまり、これらのエッジケースに依存せず、すべてをセミコロンで終わる1行に配置し、行がステートメントまたは式で終了できない何かで終了している場合にのみ、コードを複数行に配置することをお勧めします。 。
Marcel Korpel、2010年

-3

JSは関数型言語であるため、きちんとしたJSプログラマーはY-combinatorを作成し、それがどのように機能するかを頭から理解できなければなりません。


1
Y-combinatorを記述できることの何が問題になっていますか?そして、はいjavascriptは関数型言語です。「JavaScriptを知っている」と言いたい場合は、関数型プログラミングを十分に理解する必要があります。
レイノス

Cも関数型言語として使用できます。
kzh

私は最近Yコンビネーターについて読み、それがどのように機能し、どのような場合にそれが使用できるかを理解しました。
2011年

-5

... Google Web Toolkitについて。つまり、JavaScriptプロジェクトはおそらくもっと便利な方法で開発できるでしょう。


2
GWTは実際にはJavaScriptではなく、JavaScriptを記述するJava風の方法です。
Livingston Samuel

...そしてすべてのJavasciptプログラマはそれについて知っておくべきです。
Viktor Sehr、2011年

あなたのjavascriptプロジェクトはおそらくもっともっと便利な方法で開発できるでしょう。
Viktor Sehr

6
個人的には、JavascriptはJavaよりも扱いやすいと思います。
timw4mail、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.