DT日記

家を離れた自宅警備員の日記

JavaScriptとは何か

大学で入ってた部活の部内wikiに書いた記事の転載。読んでくれた部員は居るのか……?

Wikiのタイムスタンプを見ると、書いたのは2009年の7月らしいので、いまの自分の認識は多少といふかだいぶといふか変ってるけど、編輯せずにだいたいそのまんまで。結構無責任にいろんな説明を抛り投げてる辺りはいまのスタイルと全然変ってないよね。

概要

JavaScriptはWebブラウザなどに広く実装されるナイスなスクリプト言語だよ。名前が似てるだけで、JAVAとはほとんど関係ない*1よ!

動作

Web Browserで動くよ! 具体的には適当なファイル(hogehoge.html)を作って、<script>〜〜</script>の間に書けば良いよ!!

<title>js test</title>
<script>

/* この辺にコード書く */

</script>

HTMLファイルの中身はこれだけでOK! VisualStudioなんて重たくて遅くて高くてめんどい開発環境が必要な言語に比べて、実にお手軽だね!!

特徴

オブジェクト指向

JavaScriptでは何もかもがオブジェクト! 実に素敵だね。実にダイナミック*2だね。

変数

JavaScriptでは変数宣言なんて面倒臭いものは不要! 実にさっぱりしている!

var n=10,m=20;
o=100;
alert(n+m+o);

結果→130が出力

JavaScriptのデータ型には変数型、文字列型、オブジェクト型、ブーリアン型、配列型、オブジェクト型の五つがあるらしいよ! なんだけど、ぜんぶvarで宣言して良いよ。ほんとは変数の型なんて関係ねえ!ってのが正しいんだけど。

じゃあどうするんだいって? 前の項では「オブジェクトかっけーだろひゃっほーい」のひとことで済ませちゃったけど、実はこんなこともできるんだ。

var a = new Number(69);
var b = new String;
b="Fuxcme!";
var c = new Array(5);
c = [18,27,36,45];
//c[4]=54;
document.writeln("a("+typeof a+") : "+a.toString()+"<br>");
document.writeln("b("+typeof b+") : "+b.toString()+"<br>");
document.writeln("c("+typeof c+") : "+c.toString()+"<br>");

結果→


a(object) : 69
b(string) : Fuxcme!
c(object) : 18,27,36,45,54,45
が出力される。

配列

言葉でぐだぐだ説明するよりも、まづはソースコードを見せるよ!

var ary=new Array();
ary[0]="Hello,";
ary[1]="World!";
n=1;
alert(ary["0"]+ary[n.toString()]);

結果→Hello,World!が出力

あれれ〜これおかしいよ〜〜? だって、ary[0][1]に入ってるはずなのに、ary["0"]でも参照できるなんて。

JavaScriptの配列は、実は連想配列なんだ!

函数

JavaScriptでは函数だって簡単に作れるよ!

function fxck(a,b){
    return a*a+b*b;
    //a^2+b^2を返す
}

var x=1,y=2;
var z;
z=fxck(x,y); //値をxに代入
alert(z); //1^2+2^2=5
alert(fxck(10,20)); //10^2+20^2=500
//ここで呼出しても良い;

この使い方に特に疑問はないよね?型をいちいち気にしない以外はあまりおもしろくないから! 次行くよ!

var fuxk = function(a,b){
    alert(a*a+b*b);
    //a^2+b^2を表示する
}

fuxk(69,96);

結果→13977が出力

あにこれえ。

ワンライナー

ブラウザのアドレスバーにコピペ→Enterすれば動くよ!

  • javascript:alert(function(n){var str="";i=x=a=b=0;for(;i<n;){x=a+b;b=a;a=x;str=str+b+( (++i==n)?"":", ");if(!a)a=1;}return str;}(20));

コメント

  • たぶんこの記事は書き掛けだよ! -- hoge &new{2009-07-31 (金) 01:35:57}
  • javascript:A=String;b=A.prototype;myStr=new A("str\nstr\n\nstr");b.chomp=function(){return this.replace(/\n+$/,"");};b.func=function(){alert(this)};myStr.chomp().func(); -- こんなのも書けるよ &new{2009-12-22 (火) 00:30:25}
  • javascript:(function(){var e=10;with({e:e}){e=20;alert(e);}alert(e);}()) -- こんなのも書けるね &new{2010-01-17 (日) 02:18:10}

*3

*1:ただし、C言語を規範として作られた、標準のメソッドにいくつか同じ機能を持ったものがあるなどと云った共通項はある。

*2:編輯註: 動的ってことが言ひたかったんですよ><

*3:編輯註: このコメントを書いたのは全部本人。