類型轉(zhuǎn)換
1、直接轉(zhuǎn)換 parseInt() 與 parseFloat()
alert('12'+7); //彈出127
alert( parseInt('12') + 7 );? //彈出19
alert( parseInt(5.6));? // 彈出5
alert('5.6'+2.3);? // 彈出5.62.3
alert(parseFloat('5.6')+2.3);? // 彈出7.8999999999999995
alert(0.1+0.2); //彈出 0.3000000000000004
alert((0.1*100+0.2*100)/100); //彈出0.3
alert((parseFloat('5.6')*100+2.3*100)/100); //彈出7.9
2、隱式轉(zhuǎn)換 “==” 和 “-
? ??if('3'==3)
{
? ? alert('相等');
}
// 彈出'相等'
alert('10'-3);? // 彈出7
3、NaN 和 isNaN
alert( parseInt('123abc') );? // 彈出123
alert( parseInt('abc123') );? // 彈出NaN
變量作用域
變量作用域指的是變量的作用范圍梅惯,javascript中的變量分為全局變量和局部變量。
1、全局變量:在函數(shù)之外定義的變量羊瘩,為整個頁面公用荒勇,函數(shù)內(nèi)部外部都可以訪問柒莉。
2、局部變量:在函數(shù)內(nèi)部定義的變量沽翔,只能在定義該變量的函數(shù)內(nèi)部訪問兢孝,外部無法訪問
? ? //全局變量
? ? var a = 12;
? ? function myalert()
? ? {
? ? ? ? //局部變量
? ? ? ? var b = 23;
? ? ? ? alert(a);
? ? ? ? alert(b);
? ? }
? ? myalert(); //彈出12和23
? ? alert(a);? //彈出12? ?
? ? alert(b);? //出錯
封閉函數(shù)
封閉函數(shù)是javascript中匿名函數(shù)的另外一種寫法,創(chuàng)建一個一開始就執(zhí)行而不用命名的函數(shù)仅偎。
一般定義的函數(shù)和執(zhí)行函數(shù):
function changecolor(){
? ? var oDiv = document.getElementById('div1');
? ? oDiv.style.color = 'red';
}
changecolor();
封閉函數(shù):
(function(){
? ? var oDiv = document.getElementById('div1');
? ? oDiv.style.color = 'red';
})();
還可以在函數(shù)定義前加上“~”和“!”等符號來定義匿名函數(shù)
!function(){
? ? var oDiv = document.getElementById('div1');
? ? oDiv.style.color = 'red';
}()
閉包
什么是閉包?
函數(shù)嵌套函數(shù)跨蟹,內(nèi)部函數(shù)可以引用外部函數(shù)的參數(shù)和變量,參數(shù)和變量不會被垃圾回收機(jī)制收回
function aaa(a){
? ? ? var b = 5;? ? ?
? ? ? function bbb(){
? ? ? ? ? a++;
? ? ? ? ? b++;
? ? ? ? alert(a);
? ? ? ? alert(b);
? ? ? }
? ? ? return bbb;
? }
var ccc = aaa(2);
ccc();
ccc();
改寫成封閉函數(shù)的形式:
var ccc = (function(a){
? var b = 5;
? function bbb(){
? ? ? a++;
? ? ? b++;
? ? alert(a);
? ? alert(b);
? }
? return bbb;
})(2);
ccc();
ccc();
用處?
1橘沥、將一個變量長期駐扎在內(nèi)存當(dāng)中窗轩,可用于循環(huán)中存索引值
? ? window.onload = function(){
? ? ? ? var aLi = document.getElementsByTagName('li');
? ? ? ? for(var i=0;i
? ? ? ? {
? ? ? ? ? ? (function(i){
? ? ? ? ? ? ? ? aLi[i].onclick = function(){
? ? ? ? ? ? ? ? ? ? alert(i);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? })(i);
? ? ? ? }
? ? }
......
? ?
? ?
? ?
? ?
? ?
2、私有變量計數(shù)器座咆,外部無法訪問痢艺,避免全局變量的污染
var count = (function(){
? ? var a = 0;
? ? function add(){
? ? ? ? a++;
? ? ? ? return a;
? ? }
? ? return add;
})()
count();
count();
var nowcount = count();
alert(nowcount);