Javascript上篇

来源:https://www.cnblogs.com/yumiaoxia/archive/2018/04/19/8885108.html
-Advertisement-
Play Games

本文章適合具有一定程式編程語言基礎的人士閱讀,最好學完Java基礎再來閱讀本文章更容易理解語言初學者會看起來比較費勁,不易理解 一.導入腳本 在html導入Javascript的格式是: 兩個關鍵屬性:deter,async deter:defer屬性告訴瀏覽器要等整個頁面載入以後、解析完畢才執行該 ...


本文章適合具有一定程式編程語言基礎的人士閱讀,最好學完Java基礎再來閱讀本文章更容易理解語言初學者會看起來比較費勁,不易理解

一.導入腳本

在html導入Javascript的格式是:

<script src="test.js" type="text/javascript"></script>

兩個關鍵屬性:deter,async

    deter:defer屬性告訴瀏覽器要等整個頁面載入以後、解析完畢才執行該<script.../>中的腳本。

   async:指定async屬性的的<script.../>的腳本會啟動新的線程,非同步執行<script.../>導入的腳本文件

   語法格式如下:

<script src="test.js" type="text/javascript" defer async></script>

二.數據類型和變數

隱式定義:直接給變數賦值

顯示定義:使用var關鍵字定義變數。顯式聲明變數時,變數沒有初始值,聲明變數的數據類型也不確定,當第一次給變數賦值時,數據類型才確定下來。

變數的作用域:

  全局變數:在全局範圍(不在函數內)定義的變數(不管是否使用var),不是用var定義的變數都是全局變數,全局變數可以被所有的腳本訪問。

 局部變數:在函數里定義,只在函數里有效

實例代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件處理中全局變數和局部變數</title>
    <script type="text/javascript">
        var x="全局變數";
    </script>
</head>
<body>
<input type="button" value="局部變數" onclick="var x = '局部變數'; alert('輸出x變數的值 '+x);"/>
<input type="button" value="全局變數" onclick="alert('輸出x全局變數的值 '+x)"/>
</body>
</html>

javascript的變數提升機制:所謂變數提升就是不管被不被執行,變數聲明總是會被解釋器提升到函數體頂部。

使用let變數和使用const定義常量

  使用let定義的全局變數不會變成window對象的屬性,也不會出現變數提升的情況,彌補了var的缺陷

  使用const定義的常量只能在定義時初始化。使用const定義常量以後不允許改變常量值。

       基本數據類型

      數值類型:包括整型和浮點數,支持科學記數法

     布爾類型:只有true和false兩個值

     字元串類型:字元串類型必須用雙引號或單引號引起來

     undefined類型:專門用來確定一個已經創建但是沒有初值的變數

     null類型:表示某個變數的值為空,很多時候,undefined和null相等

三.正則表達式

 

新建正則表達式

方式一:直接量語法

var reg = /pattern/attributes

方式二:創建 RegExp 對象的語法

 var reg = new RegExp(pattern, attributes);

參數說明:

參數 pattern 是一個字元串,指定了正則表達式的模式或其他正則表達式。
參數 attributes 是一個可選的字元串,包含屬性 “g”、”i” 和 “m”,分別用於指定全局匹配、區分大小寫的匹配和多行匹配。ECMAScript 標準化之前,不支持 m 屬性。如果 pattern 是正則表達式,而不是字元串,則必須省略該參數。

兩者區別在於:
1.採用直接量語法新建的正則表達式對象在代碼編譯時就會生成,是平常開發中常用的方式;
2.採用構造函數生成的正則對象要在代碼運行時生成。

正則表達式使用:
正則對象的方法是指這樣使用的: RegExp對象.方法(字元串)
字元串對象的方法是這樣使用:字元串.方法(RegExp對象)

正則對象的屬性和方法

屬性

ignoreCase 返回布爾值,表示RegExp 對象是否具有標誌 i
global 返回布爾值,表示RegExp對象是否具有標誌g
multiline 返回布爾值,表示RegExp 對象是否具有標誌 m。
lastIndex 一個整數,標識開始下一次匹配的字元位置
source 返回正則表達式的源文本(不包括反斜杠)

i 執行對大小寫不敏感的匹配

g 執行全局匹配(查找所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配
正則表達式作用

通常用於兩種任務:

1.驗證
用於驗證時,通常需要在前後分別加上^和$,以匹配整個待驗證字元串;

2.搜索替換
搜索/替換時是否加上此限定則根據搜索的要求而定,此外,也有可能要在前後加上\b而不是^和$

字元類匹配

[…] 查找方括弧之間的任何字元
[^…] 查找任何不在方括弧之間的字元
[a-z] 查找任何從小寫 a 到小寫 z 的字元
[A-Z] 查找任何從大寫 A 到大寫 Z 的字元
[A-z] 查找任何從大寫 A 到小寫 z 的字元
. 查找單個字元,除了換行和行結束符
\w 查找單詞字元,等價於[a-zA-Z0-9]
\W 查找非單詞字元,等價於[^a-zA-Z0-9]
\s 查找空白字元
\S 查找非空白字元
\d 查找數字,等價於[0-9]
\D 查找非數字字元,等價於[^0-9]
\b 匹配單詞邊界
\r 查找回車符
\t 查找製表符
\0 查找 NULL 字元
\n 查找換行符

重覆字元匹配

{n,m} 匹配前一項至少n次,但不能超過m次
{n,} 匹配前一項n次或更多次
{n} 匹配前一項n次
n? 匹配前一項0次或者1次,也就是說前一項是可選的,等價於{0,1}
n+ 匹配前一項1次或多次,等價於{1,}
n* 匹配前一項0次或多次,等價於{0,}
n$ 匹配任何結尾為 n 的字元串
^n 匹配任何開頭為 n 的字元串
?=n 匹配任何其後緊接指定字元串 n 的字元串
?!n 匹配任何其後沒有緊接指定字元串 n 的字元串

匹配特定數字

^[1-9]\d*$    匹配正整數
^-[1-9]\d*$   匹配負整數
^-?[0-9]\d*$   匹配整數
^[1-9]\d*|0$  匹配非負整數(正整數 + 0)
^-[1-9]\d*|0$   匹配非正整數(負整數 + 0)
^[1-9]\d*.\d*|0.\d*[1-9]\d*$  匹配正浮點數
^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 匹配負浮點數
^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$  匹配浮點數
^[1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$   匹配非負浮點數(正浮點數 + 0)
^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$  匹配非正浮點數(負浮點數 + 0)

匹配特定字元串

^[A-Za-z]+$  匹配由26個英文字母組成的字元串
^[A-Z]+$  匹配由26個英文字母的大寫組成的字元串
^[a-z]+$  匹配由26個英文字母的小寫組成的字元串
^[A-Za-z0-9]+$  匹配由數字和26個英文字母組成的字元串
^\w+$  匹配由數字、26個英文字母或者下劃線組成的字元串

方法

test方法

檢索字元串中指定的值。返回 true 或 false。
如果字元串 string 中含有與 RegExpObject 匹配的文本,則返回 true,否則返回 false。

示例:

<script type="text/javascript">
        alert(/^<a href=(\'|\")[a-zA-Z0-9\/:\.]*(\'|\")>.*<\/a>$/.test("<a href='http://www.crazyit.org'>瘋狂Java聯盟</a>"));
        function trim(s){
            return s.replace(/(^\s*)|(\s*$)/g,"");
        }
        alert(trim('   hello,JavaScript     '));
    </script>

四.數組

   數組是一系列的變數,有以下三個特征:

   1)Javascript的數組長度可變,數組長度總等於所有元素索引最大值加1.

   2)同一個數組中的元素類型可以互不相同

   3)訪問數組元素時不會產生數組越界,訪問並未賦值的數組元素時,該元素的值為undefined。

  Javascript數組棧使用的兩個方法如下:

       push():元素入棧,返回入棧後數組的長度

       pop():元素出棧,返回出棧的數組元素

   JavaScript數組作為隊列使用的兩個方法如下:

       unshift(ele):元素入隊列,返回入隊列後的數組的長度

       shift():元素出隊列,返回出隊列的數組元素

  arrays對象還定義瞭如下方法:

      concat(value,...):為數組添加一個或多個元素,返回追加元素後的數組。

      join([separator]):將數組的多個元素拼接在一起,組成字元串後返回

示例代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>數組</title>
    <script type="text/javascript" defer async>
        var stack = [] ;
        stack.push("孫悟空");
        stack.push("豬八戒");
        stack.push("白骨精");
        arrays=stack.concat("","動物");

      function demo1(){
           for(let i=0;i<arrays.length;i++){
               alert(arrays[i]);
           }

        return 0;
       };


        demo1();
        var queue = [];
        queue.unshift("瘋狂Java講義");
        queue.unshift("輕量級JavaEE企業應用實戰");
        queue.unshift("Java前端開發講義");

        console.log(queue.shift());
        console.log(queue.shift());
    </script>
</head>
<body>

</body>
</html>

五.函數

   函數的語法格式如下:

function functionName(param1,param2){

}

六.運算符

Javascript支持的運算符與java非常類似,還有一些獨特用法的運算符:

   1)逗號運算符。逗號運算符允許多個表達式排在一起,整個表達式返回最右邊表達式的值

 <script type="text/javascript">

        var a,b,c,d;
        a = (b = 5,c = 8,d = 56);
        document.write('a='+a+' b='+b+" c="+c+' d='+d);
    </script>

輸出:a=56 b=5 c=8 d=56

  2)void運算符,用於強行指定表達式不會發揮值,如

a = void(b = 5,c = 8,d = 56);

輸出a的值等於undefined

  3)typeof和instanceof運算符。typeof用於判斷某個變數的數據類型,也可作為函數使用。instanceof用於返回某個變數是否為指定類的實例。

七.語句

 異常拋出語句

  Javascript所有的異常都是error對象,語法格式

throw new Error(errorString);

看如下實例:

 <script type="text/javascript">
        for(let i = 0 ; i < 10 ; i++){
            document.writeln(i+"<br/>");
            if( i > 4 ) throw new Error('用戶自定義錯誤');
        }
    </script>

異常捕捉語句,語法格式如下:

try
{ staments }
catch(e)
{ staments }
finally
{ staments }

Javascript是弱類型語言,所以try塊後面只有一個catch塊。

 with語句

  with語句的主要作用是避免重覆書寫同一個對象:實例如下:

<script>

document.writeln('Hello<br/>');
document,writeln('HelloWorld<br/>');
document.writeln('javascript<br/>');

//上面語句等同於

with(document)
{
writeln('Hello<br/>');
writeln('HelloWorld<br/>');
writeln('javascript<br/>');

}

</script>

for-in迴圈語句

<script>

for(element in elements){
staments
}

</script>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HTML5與CSS3基礎教程(第7版)試讀不僅介紹了文本、圖像、鏈接、列表、表格、表單、多媒體等網頁元素,也介紹瞭如何為網頁設計結構、佈局,添加動態效果、格式化等形式,此外還涉及調試和發佈、聚合和吸引訪問等。書中詳細講解了視頻、音頻及其他新增特性,從零開始教會讀者創建漸進增強的普適性網站。書中提供了 ...
  • 《HTML5與CSS3基礎教程(第8版)》自第1版至今,一直是講解HTML和CSS入門知識的經典暢銷書,全面系統地闡述HTML5和CSS3基礎知識以及實際運用技術,通過大量實例深入淺出地分析了網頁製作的方方面面。最新第8版不僅介紹了文本、圖像、鏈接、列表、表格、表單等網頁元素,還介紹瞭如何為網頁設計 ...
  • 一、在本地新建一個文件js文件 JS代碼: 二、設置快捷鍵 將上述js文件設置一個快捷鍵到桌面,然後點擊文件屬性設置快捷鍵,你可以使用任何和其他快捷鍵不同的組合鍵。如下圖: 三、效果 在桌面按下方纔設置的快捷鍵,如同時按下Ctrl、Alt和left鍵,效果如下: 按回車即可進行電腦的快速關機。 四、 ...
  • jQuery的touch事件是當用戶觸摸事件(頁面)時觸發的。 jQuery的click事件是當用戶點擊元素時觸發的。 而事件執行流程是手指點擊一個元素,會經過:touchstart --> touchmove -> touchend --》click。所以在觸發touch事件時,預設會自動觸發cl ...
  • tooltip.css 純CSS滑鼠提示工具。 v. 2.0.0 更新日期:2018.4.12 預覽DEMO。 ...
  • 含義 Promise 是非同步編程的一種解決方案,比傳統的解決方案——回調函數和事件——更合理和更強大。它由社區最早提出和實現,ES6 將其寫進了語言標準,統一了用法,原生提供了 Promise 對象。 Promise 對象是一個代理對象(代理一個值),被代理的值在 Promise 對象創建時可能是未 ...
  • 線程分為:單線程和多線程 單線程:一個正在運行的程式(即進行)至少有一個線程,這個線程叫做主線程,只有一個主線程的程式叫做單線程程式,主線程負責執行所有代碼的執行(UI展現及刷新、網路請求、本地存儲等),這些代碼只能順序執行,不能併發執行。 多線程:有多個線程的程式叫做多線程程式,主線程可以開闢多個 ...
  • $scope.yearList = [ {k : "2014", v : "2014"}, {k : "2015", v : "2015"}, {k : "2016", v : "2016"}, {k : "2017", v : "2017"}, ... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...