IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
Effective JavaScript A Few Ways to Improve Your JavaScript Effective JavaScript は JScript 、JavaScript 、ECMAScript による効果的なスクリプトの構築方法を解説するものです 目次 0 序章 はじめに 表記法 1 関数 引数 - デフォルト引数、正当性チェック、残余引数、オーバーロード 関数とオブジェクト - 無名関数、関数オブジェクト、関数アダプタ クロージャ - 無名関数を返す関数 関数の変形 - 関数の合成、引数の束縛、引数の加工 2 例外 3 オブジェクト プロパティとメソッド - 基本的な話 コンストラクタとプロトタイプ - コンストラクタ、メソッドの定義、プロトタイプによる継承 アクセスレベル - 非公開メンバ、限定公開メンバ実現のアプローチ © 1999-2004 exe
2007年12月06日15:30 カテゴリアルゴリズム百選 アルゴリズム百選 - 値と参照 今回は値と参照について取り上げます。 突然ですが問題です。以下のJavaScriptプログラムを実行すると、何と表示されるでしょうか? プログラム: var a = [0, 1, 2, 3]; var b = a; b[0] = 'zero'; p(a); 出力: エラー: 答えは、"zero, 1, 2, 3"です。しかし、なぜaを直接変更していないのにaの中身が変わっているのでしょうか? ここで、二行目に注目してみます。ここでは変数bに変数aを代入しています。変数aは配列です。ここだけ見ると、内部で起こっているのは以下のようなことに見えなくもありません。 array b -+ array b -+ | 0 | | 0 | | 1 | = | 1 | | 2 | | 2 | | 3 | | 3 |
まず、ループは再帰で表現できる ループというのはすべて再帰呼び出しで表現できる。 たとえば、コレは var array = [1, 2, 3]; for (var i = 0; i < array.length; i ++) alert(array[i]); こんな感じになる (function f(array, i) { if (i < array.length) { alert(array[i]); return f(array, i+1); } })([1, 2, 3], 0); もし、 array がこの目的以外に使われないならコッチのがキレイかも (function f(array) { alert(array.shift()); if (array.length) return f(array); })([1, 2, 3]); ということは、再帰はループで表現できるはず という
このドメインを購入する。 hawklab.jp 2019 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois). Privacy Policy
Common Lispでの関数の詳細についていろいろと試してみた. 関数の基本 (setf 関数名)という関数名 大域関数と局所関数 関数のパラメータ レキシカル変数と関数とクロージャ 動的スコープ 関数の基本 関数は基本的にdefunで定義する. (defun 関数名 パラメータリスト 本体) 引数に1を加えて返す関数は以下のようになる. > (defun hoge (x) (+ x 1)) HOGE > (hoge 1) 2 関数の返り値は,本体の最後の式の返り値,あるいは (return-from 関数名 値) で指定する値である.以下の関数はreturn-fromにより固定値5を返す.+式やformat式は無意味である. > (defun fuga (x) (+ x 1) (return-from fuga 5) (format t "fuga~%")) FUGA > (fuga
freehttp://d.hatena.ne.jp/smeghead/20071216/closure の続きというか今回はもうすこし真面目にあえて、コードレスで、自分の理解しているところのクロージャを説明してみるテストです。まず、誤解を恐れずに書いてしまうと、言語によってクロージャという機能が提供されている訳ではない。クロージャというのは、ある機能の副作用を用いたテクニックの名前である。クロージャと呼ばれているテクニックを使える言語は、以下の機能を提供しています。言い換えると、以下の機能の副作用によってクロージャというテクニックを使用できるようになります。 レキシカルスコープ(静的スコープ)関数がファーストクラスオブジェクト(第一級オブジェクト)であることレキシカルスコープオブジェクト(主に関数)が定義された時に、その場所から参照できる範囲を、オブジェクト(主に関数)の実行時にも参照でき
Ant [2009-02-06] awk [/2007-05-14] C言語 [/2006-09-08] C++ [/2007-01-25] C# Java [/2014-08-09] JavaScript Common Lisp MS-DOS MSX-BASIC Oracle [/2008-04-29] PASCAL Perl PL/I PL/SQL [/2007-12-28] Scala [/2011-01-08] SQL UNIX [/2012-05-16] Visual Basic [/2008-03-07] VB.NET BNF・yacc [2007-05-11] DTD [2008-11-01] Excel [/2008-07-26] HTML IP JSP [/2007-06-30] makefile PukiWiki SQL*Plus [/2008-04-26] TeraT
四則演算 比較演算 [/2008-02-26] 論理演算 [/2007-03-15] ビット演算 関数 [/2008-07-26] →文字列関数 →日付関数 if [/2008-11-15] null 豆知識 [/2008-05-09] MSX-BASIC [2005-01-16/2008-11-15] VisualBasic for Application [2005-01-16/2008-08-12] VBScript [2007-04-06] VB.NET [2006-04-15/2008-11-15] PASCAL [2005-02-10] PL/I [2005-01-16] Perl [2005-03-12/2006-07-11] C言語(gcc, WIN32) [2005-01-16/2006-10-18] Visual C++(MFC) [2005-01-16/2006-08
関数内部で利用できる特殊なオブジェクト - argumentsオブジェクト - JavaScriptの関数を利用する場合に、もう1つ忘れてはならないトピックとして、argumentsオブジェクトがある。argumentsオブジェクトは、関数の内部でのみ利用可能なオブジェクトで、関数に渡された引数値を管理することができる。 ■JavaScriptは引数をチェックしない argumentsオブジェクトは、具体的にどのような局面で利用すればよいのか ―― それを解説する前に、まずは以下のコードをご覧いただきたい。 function display(msg) { window.alert(msg); } display(); // undefined [A] display('山田'); // 「山田」と表示 [B] display('山田', '掛谷');
EfficientJavaScript - Dev.Opera - 効率的な JavaScript 目次 この文書について 効率的な JavaScript ECMAScript eval や Function のコンストラクタを使うのはやめよう eval を書き換えよう 関数を使いたいなら function を使おう with を使うのはやめよう 性能を決める関数で try-catch-finally を使うのはやめよう eval と with は隔離しよう グローバル変数を使うのはやめよう 暗黙のオブジェクト変換に気をつけよう 性能を決める関数で for-in を使うのはやめよう 文字列は累積スタイルで使おう プリミティブの操作は関数呼び出しより速い setTimeout() や setInterval() には文字列でなく関数を渡そう DOM 再描画と再フロー 再フローの回数をでき
by Sean M. Burke A JavaScriptish companion to Mark-Jason Dominus's Higher-Order Perl http://hop.perl.plover.com/ ~ Under Construction, Obviously ~ HOJ.0: Functional JavaScript Reviewed For a general review of JavaScript, I think that the best work available is the first third or so of the book Javascript: The Definitive Guide http://www.oreilly.com/catalog/jscript4/. (The rest of the book is a det
自分自身を出力するプログラムを書いてみる事にする。 あたりまえだけど、プログラム全体を文字列とかリストにして、 プログラム中に埋め込むわけにはいかない。 でも全体は無理でも、 プログラム内の一部分だけなら文字列やリストにして利用することはできる。 そこで、プログラムを、 Aパート ... プログラムの一部分を、単に文字列とかリストにしたもの。 Bパート ... プログラム全体を出力する部分。 の2つに分けて考える。 Aパートは、Bパート(または、その一部分)をリテラルとして保持して、 Bパートがそれを利用して全体を出力するという役割分担になる。 Schemeの場合 簡単のために Schemeで考える(Lispでも動く)。 プログラムの構成は、大まかには、 (<Bパート> <Aパート>) みたいになる。 とりあえず、AパートはBパートそのものをリストにしていると考える。 するとAパート
「JavaScriptによるテンプレート・モナド、すっげー簡単!」にて: 紙と鉛筆でラムダ計算を実行できることは必要だな、やっぱり。 なんて強調したので、ラムダ計算の入門、いってみよう。 [追記]練習問題集を追加しました。説明を読みながら、あるいは読んだ後で是非やってみてください。→「JavaScriptで学ぶ・プログラマのためのラムダ計算 問題集」[/追記] ※印刷のときはサイドバーが消えます。 内容: JavaScriptの関数リテラル ラムダ式ってなんだ ラムダ計算の体系と適用操作 ラムダ式の例をいくつか β変換 -- ラムダ計算のキモ! β変換を何度か実行してみる 中間まとめ、まだ続きがあるよ JavaScriptの関数リテラル 最初に、JavaScriptに関する知識を確認しておきましょう。なお、JavaScriptの対話的実行環境については「もっともお手軽な対話的JavaScr
「プログラマのためのJavaScript」の番外シリーズ -- いやっ、ホントに。 これはシリーズのハブエントリーです。番号を(0じゃなくて)1にしたのは、全体目次だけじゃなくて内容が含まれるから。 ※ 印刷時にはサイドバーは消えるはずです、お試しください。 シリーズ全体目次(予定) (この記事;総論) 速攻速習編 自己適用からゲーデル化へ 「展望」への緊急パッチ(オハナシだよ) Reflective JavaScript 停止問題の構造 不完全性定理の構造 今回の内容: ゲーデルの不完全性定理とプログラミング ゲーデルが示したこと 不完全性定理の兄弟 -- 停止問題 JavaScript使うんだもんね 関連する記事(参考) 次の記事 速攻速習編 ●ゲーデルの不完全性定理とプログラミング 「ゲーデル」(人名;Kurt Godel、'o'の上に点々が付いてる)や彼の「不完全性定理」とかって、
Part4では,Lisp(リスプ:List Processor)インタプリタをJava言語を使って作っていきます。Lispは非常に歴史が古く,様々な分野で利用されている言語です。しかし,皆さんの中にはLisp自体をよく知らないという方もいらっしゃるかもしれません。どんなものを作るかわからないままでは面白みも半減してしまいますから,まずはLispのごく基本的な動作を紹介しましょう。 まずは簡単Lisp講座 Lispの本質は,すべてがリスト(正確にはS式,詳細は後述)で表現されることにあります。リストは要素を順序付きで並べたもので,“(1 2 3 4)”のように要素の並びをカッコでくくって表記します。このリストの要素は1,2,3,4の四つです。 「すべてがリストで表現される」という言葉の通り,Lispではプログラムもこのようなリストとして表現します。Lisp処理系は,与えられたリストの一つ目の
スクリプト言語の比較 *1 *2 *3 *4 *5 *6 *7 コメント 行の継続 定数 未代入の変数へのアクセス 変数の展開 入出力 出力 フォーマット出力 出力先変更 標準入力 __END__ 演算 +1 整数/整数 負数の除算 文字列 真と偽 多重代入 多岐分岐 関数 関数 関数引き数 関数引数に対する副作用 関数のデフォルト引数の値の評価タイミング 関数のデフォルト引数にコンテナ型を使用した場合の振舞 関数戻り値 関数の再帰 関数の別名 関数定義内関数定義 関数の引数の順番 関数にファイルハンドルを渡す オブジェクト指向 クラスの定義 インスタンスメソッドの定義 メソッドのクラス内での利用 インスタンスメソッドの可視性 インスタンスメソッドの追加 インスタンス変数 インスタンス変数の可視性 インスタンス変数の追加 クラス変数 クラスの継承 多重継承 スーパクラスのメソッド呼び出し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く