JavaScript
配合html處理一些邏輯.結合安卓開發,JavaScript就相當於我們的class類,html就相當於我們的xml,一個處理邏輯,一個展示界面.今天學一下處理邏輯的JavaScript.
JavaScript語句不能包含html標籤,只能是js腳本語言.JavaScript可以寫在html中,也可以寫在js文件中進行引用.
html中的JavaScript的使用
- body標籤運行就是javascript:+執行語句
<body>
<a href="javascript:alert('你好!');">運行JavaScript</a>
</body>
- head標籤script標籤包圍
<head>
<meta http-equiv="Content-Type" content = "text/html;charset=utf-8"/>
<title>JavaScript</title>
<meta name="author" content = "zxx">
<meta name="Description" content = "首次進軍h5">
<meta name="keywords" content = "加油">
<script type="text/javascript">
alert('直接運行');
</script>
</head>
js文件中的JavaScript是使用
- .js文件把要執行的語句放到.js文件中,然後在head標籤中的script中使用src屬性將js文件導入即可.
<script src="out.js" type="text/javascript">
</script>
out.js文件
alert('aksldjf');
- 在body標籤中通過函數的方式,使用js文件中的js腳本
在js文件創建function函數
alert('aksldjf');
function show(){
alert('我在Body標籤中');
}
在body標籤中進行調用
<body>
<a href="javascript:show()">運行JavaScript</a>
</body>
變量和數據類型
JavaScript的數據類型是在給變量初始化之後才決定的.變量的定義可以直接給個變量名,然後初始化.也可以通過var來定義變量.但是在使用之前一定要先對變量進行初始化,不然就會提示undefined.變量名的命名規則和java一致.
temp="1245";
alert(temp);
var temp;
temp=12345;
alert(temp);
js中沒有equals,兩個字符串比較用==如果是比較嚴格的判斷就用===
var temp = null;
var b;
alert(temp==b);
彈出的是true,null和undefined在某種情況下是相等的.如果是===返回的就是false
正則表達式
創建正則的方式
//第一種
var reg = /pattern/;//不要加引號,pattern就是設置的規則
//第二種
var reg = new RegExp('pattern');
RegExp對象的常用方法:
exec(str) 在給定的字符串中檢索沒有符合正則的字符串,有就返回,沒有就返回null.
test(str) 判斷給定的字符串是否滿足正則條件,滿足是true,不滿足就是false.
var str="I like football and baskatball";
//var reg=/and/;
var reg = new RegExp('and');
alert(reg.exec(str));
alert(reg.test(str));
正則表達式通配符的使用
. 任意字符
\d 0-9的的數字
\D 非0-9的符號
\s 空白字符
\S 非空白字符
\w 數字,26個應爲字母,下劃線的單詞字符
\W 非以上
\b 是字符串的邊界
\B 非….
[abc] 匹配在中括號的的字符
[^abc] 匹配不在中括號中的字符
[a-z] 匹配小寫字母
[A-Z] 匹配大寫字母
(a|b|c) 匹配abc中的任意一個即可.
正則表達式的量詞
n+ 1到多個
n* 0到多個
n? 0到1個
n{m} m個n連續出現
n{m,p} m-p之間的序列
n{m,?} 至少m個
^n 以n作爲開頭
n$ 以n作爲結尾
正則表達式修飾符
- i 執行對大小寫不敏感匹配
- g 執行全局匹配(查找所有匹配而不是找到第一個就停止)
- m 執行多行匹配
i
var str="I like football and baskatball";
var reg = /And/i;
alert(reg.test(str));
通過i忽略大小寫,這樣返回的值就是true了.
g
var str="BACBCC";
var reg = /B/g;
alert(reg.test(str));
alert(reg.test(str));
alert(reg.test(str));
alert(reg.test(str));
如果不適用g,我們每次查找到的都是第一個B,返回的也都是true.但加上g全局查找後,就會記錄上次查找的位置,所以打印結果是true,true,false,true;第三個是false,是因爲後面沒有了,但是第四次是true,不知道爲啥,我也在學習,難道還是一個循環查找不成?這個問題先保留.
m
var str="test\nbbs";
var reg = /^b/m;
alert(reg.test(str));
換行後再進行匹配.
流程控制語句
if,switch,for,while,do-while,for-in循環.和java不同的是多了一個for-in循環
for(變量 in 對象){
執行語句塊;
}
for-in的作用是遍歷數組中所有的數組元素.遍歷JavaScript對象的所有屬性.
var arr = new Array(5);
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]="abc";
arr[5]=true;
for(var index in arr){//打印數組中的元素
document.write(index+"<br/>");//打印數組的下標
document.write(arr[index]+"<br/>");//打印數組中的值
}
for(var properties in navigator){//打印對象中的屬性值
document.write("屬性:"+properties+",屬性值:"+navigator[properties]+"<br/>");
}
常用特殊語句
空語句
沒有循環體的for循環,主要用於數組的初始化工作
異常拋出語句
throw new Error(“出錯了”);我們通過try-catch-finally對異常進行捕獲,但不同於java的是catch只能有一個.輸出錯誤信息e.message;即可.
try{
var i = 5;
if(i==5){
throw new Error("報錯了");
}
}catch(e){
document.write("錯誤信息:"+e.message+"<br/>");
}finally{
document.write("finally<br/>");
}
with語句
可以避免重複書寫一些內容,把公共部分提取出來.
with(document){
write("輸出第一行數據<br/>");
write("輸出第二行數據<br/>");
write("輸出第三行數據<br/>");
}
JavaScript函數
JavaScript函數詳解
定義函數的3中方式
命名函數
function 函數名 (參數列表){
要執行的語句塊;
}匿名函數
function (參數列表){
要執行的語句塊;
}
調用的話,使用以下方式調用
var f = function(name){
alert("匿名函數\n你好:"+name);
}
f("h5");
使用function類構造匿名函數
new function(參數列表,函數邏輯);可讀性差,很少用.
var f = new Function('name','age',"alert('名字:'+name+',年齡:'+age);");
f("美女",18);
三種方式定義函數
<script type="text/javascript">
/* function user(name ,age){
alert("姓名:"+name+",年齡:"+age);
}
user("張三",23);*/
var f = function(name ,age){
alert("姓名:"+name+",年齡:"+age);
}
f("李四",14);
window.f("趙六",16);
/*var f = new Function('name' ,'age','alert("姓名:"+name+",年齡:"+age);');
f("王五",25);*/
</script>