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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...