js的寫法基礎(chǔ)分析
更新時間:2011年01月17日 23:08:55 作者:
js的寫法基礎(chǔ)分析,學習js的朋友可以參考下。
var a=false;
!a&&alert("hi");
解釋 a為真才繼續(xù)往下執(zhí)行,所以會彈出hi
var a=a||"hi";
解釋 當a為假的時候會繼續(xù)執(zhí)行,當a為真的時候跳出這個語句,所以可以通過這個辦法復制默認值
上面的方法并非所有語言都是如此處理,比如PHP
$a=@$a||"hi";
echo $a;//1
php把(@$a||"hi")之后的值賦值過去了...
$a=true;
!$a&&echo "hi";
直接報錯:syntax error, unexpected T_ECHO
關(guān)于prototype
很多情況下看到prototype都想到只有對象的情況下有
var add=function(){alert("b");}
add.prototype.a = function () {alert("hi");}
new add.prototype.a;
第一反應,可能會報錯,其實不然,當沒有生產(chǎn)對象的時候,可以通過add.prototype.a的方式直接調(diào)用靜態(tài)的方法的
JS挺會誤導人的,咳
選擇器問題:
有時候需要選擇一個節(jié)點下的子節(jié)點,用childNodes取值FIREFOX,IE的不同讓人很郁悶
document.getElementsByTagName("head")[0].getElementsByTagName("script")[0];
上面的方法結(jié)果用在head標簽階段還好,用在其他的不怎么好用了
所有覺得還是用個類名作處理好點
function getclassnode(classname,doc){
doc=doc||document;
var node=[],i=0,j=0,t;
var allnode=doc.getElementsByTagName("*");
while(t=allnode[i]){
if(RegExp(classname).test(t.className)){
node[j]=t;
j++;
}
i++;
}
return node;
}
自從用了JQ后,把原生的JS操作都忘的差不多了,偶爾復習下,感覺特麻煩,郁悶.
補上一點今天發(fā)現(xiàn)的JS要注意的地方,如果一個JS已經(jīng)引入到了當前文檔,即使移除引入節(jié)點,通過該引入JS文件定義的變量,函數(shù)等仍然有效,因為已經(jīng)加載到了當前的文檔環(huán)境,如下代碼:
document.getElementsByTagName("head")[0].removeChild(document.getElementsByTagName("head")[0].getElementsByTagName("script")[0]);
!a&&alert("hi");
解釋 a為真才繼續(xù)往下執(zhí)行,所以會彈出hi
var a=a||"hi";
解釋 當a為假的時候會繼續(xù)執(zhí)行,當a為真的時候跳出這個語句,所以可以通過這個辦法復制默認值
上面的方法并非所有語言都是如此處理,比如PHP
$a=@$a||"hi";
echo $a;//1
php把(@$a||"hi")之后的值賦值過去了...
$a=true;
!$a&&echo "hi";
直接報錯:syntax error, unexpected T_ECHO
關(guān)于prototype
很多情況下看到prototype都想到只有對象的情況下有
var add=function(){alert("b");}
add.prototype.a = function () {alert("hi");}
new add.prototype.a;
第一反應,可能會報錯,其實不然,當沒有生產(chǎn)對象的時候,可以通過add.prototype.a的方式直接調(diào)用靜態(tài)的方法的
JS挺會誤導人的,咳
選擇器問題:
有時候需要選擇一個節(jié)點下的子節(jié)點,用childNodes取值FIREFOX,IE的不同讓人很郁悶
document.getElementsByTagName("head")[0].getElementsByTagName("script")[0];
上面的方法結(jié)果用在head標簽階段還好,用在其他的不怎么好用了
所有覺得還是用個類名作處理好點
復制代碼 代碼如下:
function getclassnode(classname,doc){
doc=doc||document;
var node=[],i=0,j=0,t;
var allnode=doc.getElementsByTagName("*");
while(t=allnode[i]){
if(RegExp(classname).test(t.className)){
node[j]=t;
j++;
}
i++;
}
return node;
}
自從用了JQ后,把原生的JS操作都忘的差不多了,偶爾復習下,感覺特麻煩,郁悶.
補上一點今天發(fā)現(xiàn)的JS要注意的地方,如果一個JS已經(jīng)引入到了當前文檔,即使移除引入節(jié)點,通過該引入JS文件定義的變量,函數(shù)等仍然有效,因為已經(jīng)加載到了當前的文檔環(huán)境,如下代碼:
復制代碼 代碼如下:
document.getElementsByTagName("head")[0].removeChild(document.getElementsByTagName("head")[0].getElementsByTagName("script")[0]);
相關(guān)文章
Javascript格式化并高亮xml字符串的方法及注意事項
這篇文章主要介紹了Javascript格式化并高亮xml字符串的方法及注意事項,需要的朋友可以參考下2018-08-08d3.js中冷門卻實用的內(nèi)置函數(shù)總結(jié)
D3.js是一個JavaScript庫,它可以通過數(shù)據(jù)來操作文檔。D3可以通過使用HTML、SVG和CSS把數(shù)據(jù)鮮活形象地展現(xiàn)出來。d3.js其實提供了很多內(nèi)置的函數(shù),可以卻被大家忽略了,下面這篇文章就來給大家詳細介紹了d3.js中冷門卻實用的一些內(nèi)置函數(shù),需要的朋友可以參考借鑒。2017-02-02用js實現(xiàn)before和after偽類的樣式修改的示例代碼
本篇文章主要介紹了用js實現(xiàn)before和after偽類的樣式修改的示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-09-09