WebのJavaScript(散布ノート)
3899 ワード
JavaScriptは変数アップの特徴があります.全ファイルがjsファイルをスキャンする時に自動的に変数が先に宣言されますが、ここで注意すべきところは
たとえば:
でも、今はまだこの操作がいつなのか分かりません.javascriptエンジンの説明の時ですか?それとも呼び出しの時ですか?
たとえば: mapはjsにおいて、一つの関数を変数に割り当てることができます.以下の通りです.
継承は父のオブジェクトの原型で継承されます.例えば、 javaScriptのswitch文caseマッチング内部は
js , .
です.たとえば:
function test() {
alert(" test -- " + name) ;
var name = "hello.javascript." ;
}
test
関数を呼び出した後にイジェクトされたコンテンツがtest -- undefined
である理由は、この変数を見つけることができるが、割当値は自動的に前倒しされず、
になるからである.でも、今はまだこの操作がいつなのか分かりません.javascriptエンジンの説明の時ですか?それとも呼び出しの時ですか?
たとえば:
myname = "global"; //
function func() {
alert(myname); // "undefined"
var myname = "local";
alert(myname); // "local"
}
func();
以上のコードは、第1の目のほとんどの人が、最初にglobal
をイジェクトしたと考えています.myname = "global"; //
function func() {
var myname ;
alert(myname); // "undefined"
myname = "local";
alert(myname); // "local"
}
func();
// apply this .
: apply this , this null window
// parseInt , , parseInt 1, apply .
oldparseInt.apply(null,arguments) ; parseInt .
var count = 0 ;
var oldparseInt = window.parseInt ;
var parseInt = function() {
count +=1 ;
return oldparseInt.apply(window,arguments) ;
} ;
parseInt('10') ;
parseInt('16') ;
parseInt('14') ;
parseInt('13') ;
parseInt('11') ;
parseInt('19') ;
parseInt('12') ;
parseInt('14') ;
parseInt('15') ;
parseInt('17') ;
alert(count) ;
//apply
// . :
function run() {
return ' string is ' + this.name + this.age ;
}
var obj = {
name : 'palm' ,
age : 24
} ;
var value = run.apply(obj,[]) ; // apply run , .
alert(value) ;
高次関数の使用var fun = function() {
return ' .' ;
}
そして、関数はパラメータとして変数を受信することができ、関数はパラメータとして関数を受信することもできます.以下のとおりですfunction fun1() {
return 'hello, javaScript.' ;
}
function fun2(x) {
var value = x() ;
return value ;
}
alert(fun2(fun1)) ; //hello, javaScript.
local
を使用して、配列を反転したり、演算したり、カスタム操作したりできます.たとえば:var oNumber = window.Number ;
var Number = function(x) {
return x*x ;
}
oNumber.apply(window,[]) ;
var arr = ['8','0','1','2','3','4','5','6'] ;
var arrstr = arr.map(Number) ;
alert( 'source code - ' + arr + 'now --' + arrstr) ;
以上のコードは、map
関数およびapply
を利用して文字列配列を数字にし、f(x)=x 2動作を実現する.継承は父のオブジェクトの原型で継承されます.例えば、
function Foo() {
this.foo = ' Foo\'s perpoties.' ;
}
function Bar() {
}
Bar.prototype = new Foo() ;
Bar.prototype.constructor = Bar ;
var bar = new Bar() ;
var bar1 = new Bar() ;
bar1.foo = 'bar1\'s perpoties.' ;
alert(bar1.foo) ; //bar's perpoties.
//console.log('==== ' + bar.constructor) ;
2.javaScriptでは浮動小数点演算は精度が失われます.得られた結果は無限に正しい値に近いだけで、正しい値に等しくないです.var v1 = 0.1 ;
var v2 = 0.2 ;
console.log(v2 + v1) ;
しかし、なぜmap
が正常な結果を得ることができるのかはまだ分かりません. 0.1 + 0.1
として実現され、以下の通りです.function fun(value) {
switch(value) {
case 'A' : console.log('A') ; break ;
case 'B' : console.log(B) ; break ;
case undefined : console.log('unkown.') ; break ;
default :
console.log(' miss.') ;
}
}
//fun('A') ;
fun(String('A')) ; //A
fun(new String('A')) ; //miss.
```
`String()` , `new String()`, 。