Javascript一(变量,数据类型,正则表达式,数据,语句)
本文章適合具有一定程序編程語言基礎的人士閱讀,最好學完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>?
轉載于:https://www.cnblogs.com/yumiaoxia/p/8885108.html
總結
以上是生活随笔為你收集整理的Javascript一(变量,数据类型,正则表达式,数据,语句)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)彻底理解浏览器的缓存机制
- 下一篇: Confluence 6 复杂授权或性能