タグ付けされた質問 「javascript」

JavaScript(Javaと混同しないでください)は、クライアント側とサーバー側の両方のスクリプトで使用される、高レベルで動的なマルチパラダイムの弱く型付けされた言語です。ECMAScript、JavaScript、JScriptなどの一般的な実装に関する質問には、このタグを使用します。JSは通常、そのECMA従兄弟であるActionScriptを参照しません。

6
FacebookのReactとWebコンポーネント(ポリマー)の長所と短所
今後のWebコンポーネント仕様に対するFacebookのReactの主な利点は何ですか(逆もまた同様です)(または、リンゴ同士の比較はGoogleのPolymerライブラリとなるでしょう)。 このJSConf EUトークとReactホームページによると、Reactの主な利点は次のとおりです。 コンポーネントモデルを使用したデカップリングと凝集度の向上 抽象化、構成、表現力 仮想DOMと合成イベント(基本的に、DOMとそのイベントシステムを完全に再実装したことを意味します) IE 8で最新のHTML5イベントを有効にします サーバー側のレンダリング テスタビリティ SVG、VML、およびへのバインド <canvas> この仮想DOMの概念(明らかに)を除き、ほとんどすべてのことはWebコンポーネントを介してネイティブにブラウザーに統合されています。仮想DOMと合成イベントが古いブラウザをサポートするために今日どのように有益であるかを見ることができますが、ネイティブブラウザのコードの大部分を捨てて、長期的に足を踏み入れるようなものではありませんか?最新のブラウザに関する限り、それはホイールの不必要なオーバーヘッド/再発明の多くではありませんか? ここに、Webコンポーネントが面倒を見てくれるReactが欠けていると思うものをいくつか紹介します。私が間違っている場合は修正してください。 ネイティブブラウザサポート(「より高速であることが保証されている」を参照) スクリプト言語でスクリプトを記述し、スタイル言語でスタイルを記述し、マークアップ言語でマークアップを記述します。 Shadow DOMを使用したスタイルのカプセル化 代わりにReactにはこれがあり、JavaScriptでCSSを記述する必要があります。可愛くない。 双方向バインディング
521 javascript  html 

7
JavaScriptで==を使用するのは理にかなっていますか?
でJavaScriptの、良い部品、ダグラス・クロックフォードは書きました: JavaScriptには、2つのセットの等値演算子があります:===と!==、およびそれらの邪悪な双子==と!=。良いものはあなたが期待する方法で動作します。2つのオペランドが同じ型で同じ値を持つ場合、を===生成しtrue、!==生成しfalseます。悪魔の双子は、オペランドが同じタイプの場合は正しいことをしますが、異なるタイプの場合、値を強制しようとします。彼らがそれを行うルールは複雑で記憶に残りません。これらは興味深いケースの一部です: '' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' \t\r\n ' == 0 // true 推移性の欠如は憂慮すべきです。私のアドバイスは、邪悪な双子を決して使わないことです。代わりに、常に===and …

5
ES6で「var」キーワードを使用する理由はありますか?
ES6に対する Babelのガイドによると: let新しいvarです。 明らかに唯一の違いは、現在のブロックにスコープされるのvarに対して、現在の関数にletスコープされるということです。この答えにはいくつかの良い例があり ます。 varES6コードで使用する理由がわかりません。与えられた変数のスコープを関数全体にしたい場合でもlet、関数ブロックの先頭に宣言を置くことでそれを行うことができますvar。また、forブロックなどでより細かくスコープを設定する場合は、それも実行できます。 ですから、私の本能は、varES6コードを書くときは完全に使用をやめることです。 私の質問は、これについて間違っていますか?よりvarも望ましい合法的なケースはありますletか?
261 javascript  es6 

6
ES6で「let」と「const」をどれくらい使用する必要がありますか?
最近、io.js用のES6コードをたくさん書いています。学ぶべきコードはそれほど多くないので、自分の慣習を定義しながら進めているように感じます。 私の質問はどのような場合に使用する程度であるconst対let。 私はこのルールを適用しています:可能であれば、を使用しますconst。let値を変更する必要があることがわかっている場合にのみ使用してください。(後で値を変更する必要があることが判明しconstたlet場合は、いつでも戻ってa に変更できます。) この規則の主な理由は、一貫して簡単に適用できることです。灰色の領域はありません。 問題は、このルールを適用すると、実際には宣言の95%がになるということですconst。そして、これは私には奇妙に見えます。私は使用していますletのようなもののためにiではforループ、または時折(実際の生活の中で多くを起動しない)の累積フィボナッチ合計のようなもののために。これには驚きました。これまでのES5コードの「変数」の95%は、変化しない値に対するものでした。しかしconst、コード全体を見ると、どうも間違っているように感じます。 だから私の質問は次のとおりconstです。これだけ使用しても大丈夫ですか?私は本当に次のようなことをすべきconst foo = function () {...};ですか? またはconst、モジュールの最上部にリテラルをハードコーディングしているような状況、つまりフルキャップで行うような状況のために予約する必要がありますconst MARGIN_WIDTH = 410;か?
214 javascript  es6 

1
ネイティブのES6がbluebirdよりも遅く、より多くのメモリを消費するのはなぜですか?
ではこのベンチマーク、スイートは、ブルーバード約束に比べES6の約束を完了するまでに4倍の時間がかかり、多くのメモリと3.6倍を使用しています。 JavaScriptライブラリは、Cで記述されたv8のネイティブ実装よりもはるかに高速で軽量になります。Bluebirdのpromiseは、ネイティブのES6のpromiseとまったく同じAPIを備えています(さらに、多数の追加のユーティリティメソッド)。 ネイティブの実装は間違って書かれているだけですか、それとも私が見逃している他の側面がありますか?

8
長寿命(20年以上)向けのWebアプリケーションの開発
現在、政府の土地計画用のWebアプリケーションを開発しています。アプリケーションは主にブラウザで実行され、ajaxを使用してデータをロードおよび保存します。 最初の開発をしてから卒業します(学生の仕事です)。この後、チームの残りのメンバーは、必要に応じて随時機能を追加します。彼らはコーディングの方法を知っていますが、大部分は土地計画の専門家です。 Javascriptテクノロジーが変化するペースを考えると、20年経った今でも動作するコードをどのように書くことができますか?具体的には、コードを将来に備えて使用する(または避ける)必要があるライブラリ、テクノロジ、および設計のアイデアはどれですか

15
Java、Javascript、C#などのメモリ管理言語が「new」キーワードを保持しているのはなぜですか?
newJava、Javascript、C#などの言語のキーワードは、クラスの新しいインスタンスを作成します。 この構文は、C ++から継承されているようです。C++ newは、ヒープ上のクラスの新しいインスタンスを割り当て、新しいインスタンスへのポインターを返すために特に使用されます。C ++では、これがオブジェクトを構築する唯一の方法ではありません。new- を使用せずにスタック上にオブジェクトを作成することもできます。実際、この方法のオブジェクトの作成方法はC ++でより一般的です。 だから、C ++のバックグラウンドから来て、newJava、Javascript、C#のような言語のキーワードは、私にとって自然で明白なように思えました。それから、newキーワードのないPythonを学び始めました。Pythonでは、次のように、コンストラクターを呼び出すだけでインスタンスが構築されます。 f = Foo() 最初は、Pythonが持つ理由がないことに気付くまで、これは少しnew戸惑いました。すべてがオブジェクトであるため、さまざまなコンストラクタ構文を明確にする必要はありません。 しかし、それから私は考えました-Javaの本当のポイントは何newですか?なんで言うのObject o = new Object();?どうしてObject o = Object();?C ++ではnew、ヒープへの割り当てとスタックへの割り当てを区別する必要があるため、間違いなくが必要ですが、Javaではすべてのオブジェクトがヒープ上に構築されますnew。Javascriptについても同じ質問をすることができます。私があまり馴染みのないC#では、newオブジェクト型と値型を区別するという点で何らかの目的があると思いますが、よくわかりません。 とにかく、C ++の後に来た多くの言語は単にnewキーワードを「継承」しているように思えます-本当にそれを必要としません。それはほとんど痕跡のキーワードのようなものです。なんらかの理由でそれを必要としているようには見えませんが、まだあります。 質問:これについて正しいですか?あるいはnew、Java、Javascript、C#などのC ++にインスパイアされたメモリ管理言語である必要があり、Pythonではなくてはならない説得力のある理由がありますか?

3
構造化ロギングと基本ロギングの利点
新しいアプリを作成しています。構造化されたログを含めたいと思います。私の理想的なセットアップはSerilog、C#コードとBunyanJSのようなものです。これらはfluentd、いろいろなものに食い込んでから出て行くことができると、最初は考えていましたelasticsearch + kibana。MySQLデータベースはすでにあるので、短期的にはSerilog + Bunyanのセットアップと開発者がそれを使用することに興味があり、もう少し時間をかけてfluentdと残りを取り込む間にMySQLにログインできます。 :しかし、私たちの経験豊富なプログラマーの一つは、単にような何かを好むlog.debug("Disk quota {0} exceeded by user {1}", quota, user);使用log4netして、同じようにMySQLのに対してSELECT文を実行します:SELECT text FROM logs WHERE text LIKE "Disk quota"; そうは言っても、どのアプローチがより良いか、ロギングシステムのタイプを選択する際にどのようなことを考慮する必要がありますか?
110 c#  javascript  mysql  logging 

3
トランポリンが機能するのはなぜですか?
私はいくつかの機能的なJavaScriptを実行しています。Tail-Call Optimizationが実装されたと思っていましたが、結局は間違っていました。したがって、私は自分でトランポリンを学ぶ必要がありました。ここや他の場所を少し読んだ後、基本を理解し、最初のトランポリンを作成することができました。 /*not the fanciest, it's just meant to reenforce that I know what I'm doing.*/ function loopy(x){ if (x<10000000){ return function(){ return loopy(x+1) } }else{ return x; } }; function trampoline(foo){ while(foo && typeof foo === 'function'){ foo = foo(); } return foo; /*I've seen trampolines without this, mine …

2
JavaScriptとは何ですか?
これはすべて、W3C HTML ValidatorのようなJavaScript準拠のWebページをテストする方法を探していたときに始まりました。まだ見つけていません。何か知っているなら教えてください... 公式のJavaScriptページを探して、ECMA Scriptを見つけました。これらの人々はスクリプト言語を標準化しており(JavaScriptをもう呼び出す気はありません!)、それをECMA-262(Wikipedia)と呼びました。彼らの最新の作品はEdition 5.1です JavaScriptはMozilla Corporationによって開発され、最新の安定バージョンは1.8.5(これを参照)で、ECMAのエディション5.1に基づいています リンクWikipediaのページには、方言に言及しています。MozillaのJavaScript 1.8.5は、JScript 9(IE)およびJavaScript(ChromeのV8 [ Wiki ])およびその他多くの方言としてリストされています。JavaScript 1.8.5はECMA-262の派生物であり、SpiderMonkey [ Wiki ]はそれを実行するエンジンであることを理解していますか?そして、Chromeには独自の方言があり、V8エンジンはそれを実行するプログラムですか? これらすべての方言がECMA-262に基づいているため、理解できないのは「JavaScriptとは何ですか?」真のクロスブラウザースクリプト言語はありますか?方言の相互互換性に同意するために、さまざまな実装者が集まっていますか?この取り組みはECMAですか?

6
不変性はJavaScriptのパフォーマンスを低下させますか?
JavaScriptでは、データ構造を不変として扱う最近の傾向があるようです。たとえば、オブジェクトの単一のプロパティを変更する必要がある場合は、新しいプロパティを使用して新しいオブジェクト全体を作成し、古いオブジェクトから他のすべてのプロパティをコピーして、古いオブジェクトをガベージコレクトしてください。(とにかく私の理解です。) 私の最初の反応は、パフォーマンスに悪いように聞こえます。 しかし、Immutable.jsやRedux.jsのようなライブラリは、私よりも賢い人によって書かれており、パフォーマンスに強い関心を持っているようです。そのため、ガベージ(およびパフォーマンスへの影響)の理解が間違っているのではないかと思います。 私が見逃している不変性にパフォーマンス上の利点はありますか?

28
JavaScriptの適切な劣化はどれほど重要ですか?
Web開発者は、JavaScriptを使用してWebアプリケーションを段階的に強化し、機能を適切に低下させ、それによりアクセシビリティを確保する努力を続ける必要がありますか?それとも、その時間を新機能やその他の開発分野に集中すべきですか? その質問のサブテキストは次のとおりです。JavaScriptを無効にしたWebサイトまたはアプリケーションを利用している顧客/クライアント/ユーザーは何人ですか?JavaScriptの機能を特に要求する(私のほとんどすべてが必要とする)要件を持つプロジェクトがありますか?また、それらの要件は、適切な劣化も要求しますか? この質問をするために、JavaScriptを有効にせずにProgrammers.stackexchange.comを呼び出しました。「プログラマー-Stack ExchangeはJavaScriptを有効にした場合に最適に動作します」というメッセージを受け取りました。サイトは一般的には正常に機能しているように見えましたが、ログインするのは困難でした。(質問に投票することができませんでした。) これは開発に対する満足のいくアプローチだと思います。サイトのすべての機能を、従来の単純なHTMLおよびサーバー側のロジックで動作させるための労力を想像してください。一方で、このアプローチによって疎外されているユーザーの数は疑問です。 プログレッシブエンハンスメントを使用し、Webアプリケーションの動的機能が確実に低下するように、私たち全員(少なくとも私たちの中の優秀な開発者)は訓練されています。このプログレッシブな機能強化は風に放たれているだけですか、それとも一部のお客様はJavaScriptを有効にせずに特定のWebサービスを実際に利用していますか?

6
JQueryよりも純粋なJavaScriptを使用する利点
Javascriptのみを使用することと、JQueryのみを使用することの利点は何ですか? JavaScriptおよびJQueryコーディングの経験は限られています。HTMLページに各ビットとスニペットを追加しましたが、ほとんどの場合、サーバー側のものを他の言語でコーディングしました。2つのアプローチのいずれかを使用して理論的に同じことを行うことができます(もちろん、同じプロジェクトでそれらを混ぜることもできます)が、最初から常にJQueryを使用し始める傾向があるようですプロジェクトが要求するものは何でもありません。 だから私は単純に疑問に思っています、JQueryのみを使用せず、代わりに単純な古いJavaScriptを使用するだけの時間的な利点はありますか? 「明確な答えはありません」または「永遠に議論できる」と言うことができるので、これは非質問のように見えますが、実際には「あなたはこれを行うことができます」などの時間通りの答えを望んでいます1つのアプローチであり、他のアプローチではできません」。 scrwtpのコメントにあるように、私は単にDOM処理の部分に言及しているわけではありません。私の質問はむしろ:JQueryはライブラリです。Javascriptの場合。他の言語の他のライブラリとは対照的に、このライブラリについて私が奇妙に感じるのは、JQyeryの場合、それを排他的に使用できるように設計されており、Javascriptに直接触れる必要がないことです。これはHibernateとSQLとは対照的です。ライブラリ(またはこの場合はフレームワークですが、類似性はまだ当てはまると思います)が多くの側面を処理しますが、それを使用するときはSQLを使用できます。 、少なくとも一部のフリンジケースでは。しかし、JQueryとJavascriptの場合、JQueryのみを使用してJavascriptで行うことができます(少なくとも、私にはそう思われます)。 Stargazer712のコメントによると:はい、私はあなたに同意します。ここでの質問は、「JavaScriptをどのように使用するかという問題」です。それは私が実際に尋ねることに成功していたことですが、私はいくつかの悪い処方をしました。もう1つの例えは次のとおりです。SpringExpression Language。これはJavaライブラリです。Javaなしで使用することはできません。Javaに基づいており、Javaを使用するために必要なことはすべて実行できます。しかし実際には、このライブラリをJavaプロジェクトに追加してから、Spring ELの式言語を使用してすべてのコードを記述し、コードを事実上Javaに似せないようにします。これを使用する場合の強力な型の強制)。私はJQueryが単なるJSライブラリであることを理解していますが、実際にはSpring ELがJavaで持っているのと同じ効果があるようです。つまり、プロジェクト全体でそのAPIのみを使用し、JavaScriptのAPIを避けることができます。そして、それが良いことなのか、落とし穴などなのかと思っていました。 (そしてはい、みんなの答えを読んだ後、私はそれを理解しています: a。私の質問はやや無意味です b。質問が完全に正確であったとしても、その答えはほぼ「JQueryのみを常に使用することはできません」

22
開発者はどのようにして最新のテクノロジーを把握する時間を見つけますか?[閉まっている]
私はフリーランスのWeb開発者でしたが、2004年頃に管理ルートを下り始めましたが、再び開発(特にJavaScriptとHTML5 Web /モバイルWebアプリ)に戻ることを決定し、本当に得意な印象を受けましたこれらおよび類似の高速移動テクノロジーは、新しいスキルの学習に加えて、既存のスキルの向上に投資するために一定の時間を確保する必要があります。 私は今、かなり急な学習曲線があることに戻ってきているので理解していますが、どれだけ多くの人がそこにいるのかを見る-私がそこに立ち上がる唯一の方法は、深刻な時間を費やすことです。 フルタイムの開発者として働いている人にとって、私が理解しようとしているのはこれです。ほとんどの日、学習/研究に比べて実際にオフィスでコードを削るのに費やされる時間です。毎日2〜4時間を費やして、物事を進めるための最善の方法を身に付けることができました。 フルタイムで雇用されている優秀な開発者のほとんどは、仕事以外でかなりの時間を投資してスキルを磨いていますか? それとも、この完全に間違っているのを見ているのでしょうか?

12
Javascriptからセミコロンを削除/削除する最近のシフトはなぜですか?
Javascriptからセミコロンを省略することは最近流行しているようです。数年前、Javascriptではセミコロンはオプションであり、投稿の要点は不要であるため気にしないほうがよいと強調したブログ投稿がありました。広く引用されているこの投稿では、それらを使用しないという説得力のある理由は示されていません。ただ、それらを除外しても副作用はほとんどありません。 GitHubでさえ、セミコロンなしの時流に飛びついて、内部で開発されたコードを省略する必要があり、メンテナーによるzepto.jsプロジェクトへの最近のコミットにより、すべてのセミコロンがコードベースから削除されました。彼の主な理由は次のとおりです。 彼のチームの好みの問題です。 タイピングが少ない それらを除外する他の正当な理由はありますか? 率直に言って、私はそれらを省略する理由は見当たらず、それらを消去するためにコードに戻る理由は確かにありません。また、(年の)推奨されるプラクティスに反します。これは、「カーゴカルト」の議論を実際に購入するものではありません。では、なぜ最近のセミコロン嫌いなのでしょうか?迫り来る不足はありますか?または、これは最新のJavascriptの流行ですか?

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