摘要:區分基本類型和引用類型基本類型值指的是簡單的數據段,而引用類型值指那些可能由多個值構成的對象。基本包裝類型類型類型是字符串的對象包裝,可以使用構造函數來創建。對數組中的每一項運行給定函數,返回該函數返回的項組成的數組。
區分基本類型和引用類型
基本類型值指的是簡單的數據段,而引用類型值指那些可能由多個值構成的對象。
基本類型包含Undefined、Null、Boolean、Number、String,這5種基本數據類型是按值訪問的,因為可以操作保存在變量中的實際值。
而在操作對象時,實際上是在操作對象的引用而不是實際的對象。
為了方便操作基本類型值,ECMAScript 還提供了 3 個特殊的引用類型:Boolean、Number 和String,以便于使用對象方法操作基本類型值,引用類型與基本包裝類型的主要區別就是對象的生存期,基本包裝類型自動創建,并在代碼執行后自動銷毀實例。
Sring類型用于表示由零個或多個16位Unicode字符組成的字符序列,即字符串。
表示:字符串可以由單引號和雙引號組成,兩者沒有區別
var firstName = "Nicholas"; var lastName = "Zakas";字符串的特點:
ECMAScript中的字符串是不可變的。字符串一旦創建,它們的值就無法改變。要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后在用一個包含新值的字符串來填充該變量。
轉化為字符串:把一個值轉化為一個字符串有兩種方式。
第一種使用toString()方法,數值,布爾值,對象,和字符串值 。但是null和undefined值沒有這個方法。
var age = 11; age.toString(); var bool = true; bool.toString(); //可以傳遞參數,代表輸出數值的基數。 age.toString(2);//11基本包裝類型 String類型
String類型是字符串的對象包裝,可以使用String構造函數來創建。
var stringObject = new String("hello world");??
所有String對象的方法也可以在所有基本的字符串值中訪問到,其中繼承的value(),toLocaleString()和toString()方法,都返回對象所表示的基本字符值。
String類型的方法(一)字符方法
charAt()和charCodeAt(),都接收一個參數,基于0的字符位置。charAt()返回給定位置的字符,charCodeAt()返回字符編碼。
(二)字符串操作方法
concat()方法,接收任意多個參數,返回一個新的字符串,不改變原字符串。可以使用+代替。
var str = "hello"; var res = str.concat("world")//helloworld //str仍為hello
還提供3個基于字符串創建新字符串的方法:
slice(),substr(),substring()。都接收一個或兩個參數。第一個參數指定子字符串的開始位置,而slice(),substring()第二個參數表示字符串到哪里結束,substr()第二個參數指定返回的個數。都不會修改原字符串。推薦使用slice()
var str = "hello world"; str.slice(3); //"lo world" str.substring(3); //"lo world" str.substr(3); //"lo world" str.slice(3,7); //"lo w" str.substring(3,7); //"lo w" str.substr(3,7); //"lo worl"
(三)字符串位置方法
indexOf()和lastindexOf(),兩個方法都是從一個字符串中搜索給定的子字符串,然后返回字符串的位置。如果沒有找到則返回-1。一個從頭開始,另一個從尾開始。
(四)trim()方法
這個方法會創建一個字符串的副本,刪除前置和后綴的空格。不改變原字符。
var str = " hello "; str.trim();//hello
還有非標準的trimLeft(),trimRight(),用于刪除字符串開頭或末尾的空格
(五)字符串的模式匹配方法
1.search()
查找字符串,接受一個參數為正則表達式或字符串,返回一個與之匹配的子串的起始位置。若未找到返回-1。
例 :javaScript.search(/script/i);//返回4
search屬性不支持全局屬性檢索,所以會忽略修飾符g
2.replace():
用以執行檢索與替換操作,接受兩個參數,第一個參數是正則或字符串,第二個參數是要進行替換的字符串或一個函數,不修改原字符串 。
若第一個參數是字符串,replace()則會直接搜索這個字符串
如果想要替換所有子字符串,唯一辦法就是提供一個正則表達式。而且還要指定(g)標志。
var text = "cat, bat, sat"; var res = text.replace(/at/g,"ond") res//"cond, bond, sond" text//"cat, bat, sat"
3.match()
接受唯一一個參數,就是正則表達式,返回一個由匹配結果組成的數組。
例:“1 plus 2 equal 3”.match(/d+/g/);//返回["1","2","3"]
如果沒有設置修飾符,,就不會進行全局檢索,也會返回一個數組,數組的第一個元素保存匹配的字符串,余下的元素保存正則表達式中用圓括號括起來的子表達式。
例:解析一個url
var url = /(w+)://([w.]+)/(S*)/;? var text = "Visit my blog at http://www.example.com/-david"; result = text.match(url); if(result != null){ var fullurl = result[0];//"http://www.example.com/-david" var protocol = result[1];//"http" var host = result[2];//"www.examplr.com" var path = result[3];//"-david" }
4.split()
用以將調用它的字符串拆分為子串組成的數組,使用分隔符是split()的參數,返回一個數組。
參數為字符串
“123,456,789”.split(","); //返回["123,"456","789"];
參數為正則
“1,2 3,4 ,5”.split(/s*,s*/)//返回["1","2","3","4","5"]
(六)localeCompare()方法
如果字符串在字母表中排在參數前,返回一個負數。
如果相等,則返回0;
如果字符串在字母表中排在參數之后,返回一個正數。
(七)fromCharCode()方法
接收一個或多個字符編碼,返回一個字符串
String.fromCharCode(104,101,101,108,111)//"hello"引用類型Array
和其他語言一樣,javaScript中的數組是一個有序列表。但和其他語言不同的是,javaScript數組的每一項可以保存任何類型的數據。
創建數組有兩種基本方式,第一種使用Array構造函數,用new創建數組數組(new可以省略)
var colors = new Array("red","blue","green");
第二種使用字面量創建
var colors = ["red","blue","green"];棧方法
javaScript為數組專門提供push()和pop()方法,以便實現類似棧的行為。
push()可以接收任意數量的參數,把他們添加到數組末尾,返回修改后數組的長度。
pop()方法從數組末尾移除一項,減少數組的length值,返回移除的項。
結合使用shift(),push(),可以像使用隊列一樣的數組。
同時使用unshift()和pop()方法,可以從相反的方向來模擬隊列。
shift():從數組頭部刪除一個元素,返回被移除的元素。
unshift():從數組頭部添加一個元素,返回數組的長度。
數組中已經存在兩個可以直接用來重排序的方法:reverse()和sort()。
valvalues=[1,2,3,4,5]; values.reverse(); alert(values);//5,4,3,2,1
sort()方法按升序排列數組項,sort()方法可以接收一個函數作為參數,修改排序。
function compare(a,b){ if(a < b){ return -1; } else if(a > b){ return 1 } else{ return 0; } } var values = [4,5,1,3,2]; values.sort(compare); alert(values);//1,2,3,4,5 對于數值型可以直接寫成 function compare(a,b){ return a-b;//降序 }操作方法
concat(),將接收到的參數添加到數組的末尾,返回一個新數組,不修改原數組。
var colors = ["red","green","blue"]; var colors2 = colors.concat("yellow","red"); alert(colors);//red,green,blue alert(colors2);//red,green,blue,yellow,red
slice():能夠基于當前數組中的一個多項創建一個新數組。slice()方法可以接收一個或兩個參數,即返回項的起始和結束位置。不會影響原始數組。
splice()方法有很多種用法,始終都是返回一個數組。直接修改原數組
var colors = ["red","green"]; //刪除:指定2個參數:刪除第一項的位置,和刪除的項數,返回刪除的項 var colors4 = colors.splice(0,2); //插入:提供三個參數,起始位置,0(要刪除的項數),要插入的項,返回空數組 var colors5 = colors.splice(0,0,"1","2"); //替換:提供3個參數,起始位置,要替換的項數,要插入的項,返回替換的項 var colors6 = colors.splice(0,2,"red","green");??位置方法
indexOf()和lastIndexOf().兩個方法都接收兩個參數要查找的項和(查找的起始位置)。
在比較第一個參數中的每一項時,會使用全等操作符。
javaScript定義了5個迭代方法。每個方法都接收兩個參數:要在每一項上運行的函數和(運行該函數對象的作用域——影響this的值)。傳入這些方法的函數會接收三個參數。數組項的值,該項在數組中的位置,數組對象本身。都不會修改數組的值。
every():對數組中的每一項運行給定函數,如果該函數每一項都返回true,則返回true。
filter():對數組中的每一項運行給定函數,返回該函數返回true的項組成的數組。
forEach():對數組中的每一項運行給定函數,沒有返回值。
map():對數組中的每一項運行給定函數,返回每次函數調用結構組成的數組。
some():對數組中的每一項運行給定函數,如果該函數對任意一項返回true,則返回true
var number = [1,2,3,4,5,4,3,2,1]; var everyResult = number.every(function(item,index,array){ return (item>2); }); alert(everyResult);//false var someResult = number.some(function(item,index,array){ return (item>2); }); alert(someResult);//true var filterResult = number.filter(function(item,index,array){ return item>2; }); alert(filterResult);//[3, 4, 5, 4, 3] var mapReuslt = number.map(function(item,index,array){ return item*2; }); alert(mapResult);//[2, 4, 6, 8, 10, 8, 6, 4, 2] var num = []; var forEachResult = number.forEach(function(item,index,array){ if(item!=0){ num += item; } }); alert(num);//"123454321" alert(forEachResult)//undefined縮小方法
Reduce()和reduceRight(),這兩個方法都會迭代數組的所有項,然后構建一個最終返回的值。reduce()方法從數組的第一項開始,逐個遍歷到最后。reduceRight()則相反.
都接收兩個參數:一個在每一項上調用的函數和(作為縮小基礎的初始值)。調用的函數接收4個參數:前一值,當前值,項的索引和項的數組。這個函數返回的任何值都會作為參數返回。
//執行求和操作 var arr = [1,2,3,4,5]; var sum = arr.reduce(function(prev,cur,index,array){ return prev + cur; });
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91084.html
摘要:引用數據類型引用數據類型值指保存在堆內存中的對象。訪問方式是按引用訪問。數據類型檢測操作符是檢測基本類型的最佳工具。未定義布爾值字符串數值對象或函數用于檢測引用類型,可以檢測到它是什么類型的實例。 前端學習:教程&開發模塊化/規范化/工程化/優化&工具/調試&值得關注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:數據類型 回味,無窮! 數據類型定義 數據類型分類 基本數據...
摘要:自定義類的概述自定義類的概述代碼映射成現實事物的過程就是定義類的過程。自定義類的格式自定義類的格式使用類的形式對現實中的事物進行描述。 01引用數據類型_類 * A: 數據類型 * a: java中的數據類型分為:基本類型和引用類型 * B: 引用類型的分類 * a: Java為我們提供好的類,比如說:Scanner,Random等。 * b: 我們自己創建的類...
摘要:可用于判斷多種數據類型基本數據類型和內置對象,然而對于一些自定義構造函數生成的對象就不能進行判斷了。判斷是不是所有數據類型中,只有不等于它本身判斷數組的方法除了上文提到的三種方法可判斷外,還有一個構造函數自帶的方法可判斷。 數據類型的分類 要想判斷數據類型,首先要知道數據類型的分類。數據類型分為基本數據類型和引用數據類型。 基本數據類型 基本數據類型有 五 種,ES6中新加了第 六 種...
摘要:棧區由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。屬性返回對創建此對象的構造函數的引用。所有的和都是宿主對象參考高級程序設計堆和棧的概念和區別全面解析中的數據類型與類型轉換 數據類型 數據類型劃分 javascript中定義了6中基本數據類型(原始值類型),和一種復雜數據類型(引用類型),所謂復雜類型,其本質是由無序的名值對(key:val...
摘要:值的比較只進行值的比較會進行數據類型的轉換。只要在當前實例的原型鏈上,我們用其檢測出來的結果都是。但檢測與不一樣,還可以處理基本數據類型的檢測。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數據類型,分別是基本數據類型和引用數據類型。其中...
閱讀 1756·2023-04-25 16:28
閱讀 691·2021-11-23 09:51
閱讀 1475·2019-08-30 15:54
閱讀 1159·2019-08-30 15:53
閱讀 2827·2019-08-30 15:53
閱讀 3422·2019-08-30 15:43
閱讀 3263·2019-08-30 11:18
閱讀 3281·2019-08-26 10:25