JavaScript

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章