摘要:它可以接收兩個(gè)參數(shù),表示要查找的子字符串,表示查找的開始位置,省略的話則從開始位置進(jìn)行檢索。它會(huì)返回第一個(gè)匹配的子字符串的起始位置,如果沒(méi)有匹配的,則返回。返回一個(gè)布爾值,表示指定的對(duì)象是否在本對(duì)象的原型鏈中。
前言
前端開發(fā)最基本的就是HTML + CSS + JS了,剛?cè)胄袝r(shí)聽到的介紹就是,寫頁(yè)面亦如造房子,HTML為搭戶型,CSS是房屋裝飾,JS則好比是水電安裝,是最后的功能了。 下面我們開始裝水電了.....
ECMAScript 和 JavaScript關(guān)系ECMAScript是由歐洲計(jì)算機(jī)制造商協(xié)會(huì)(European Computer Manufacturers Association)頒布的關(guān)于JavaScript的語(yǔ)言規(guī)范,即JS的發(fā)展是以ECMAScript為標(biāo)準(zhǔn)進(jìn)行的。自1997年發(fā)布首版以來(lái),已經(jīng)歷經(jīng)N多版,好像我還在百度搜索let、const等ES6語(yǔ)法時(shí),聽說(shuō)現(xiàn)在倏的就ES10都出草案了!目前個(gè)人開發(fā)主要是 ES5/6。ECMAScript版本歷史
Javascript基礎(chǔ)語(yǔ)法1. 輸出
window.alert("hello guys!")//彈出警告窗 document.write("I am contents.");//將內(nèi)容寫到HTML文檔中 console.log("我在控制臺(tái)輸出!","others");//將內(nèi)容輸出到瀏覽器控制臺(tái) console.log("Let us play %s this %s !","basketball","friday");//%s 字符串占位符===> // "Let us play basketball this friday" var familyInfo = { name:"前端牛逼", id:666 } console.log("家族ID是 %d,家族信息是 %O",1235,familyInfo)//%d 整數(shù)占位符 %O對(duì)象占位符 //當(dāng)然,如果覺得這樣的log輸出有點(diǎn)“脫褲子放屁”,還是直接如下不用占位符吧 console.log("家族ID是:",familyID ,"家族信息是",familyInfo); //有一些用的相對(duì)少些的Log輸出: console.debug(object) //在控制臺(tái)輸出一條消息,包含一個(gè)指向代碼調(diào)用位置的超鏈接。假如是直接在控制臺(tái)輸入該命令,//就不會(huì)出現(xiàn)超鏈接(和console.log()一樣)。 console.info(object) //在控制臺(tái)輸出一條帶有“信息”圖標(biāo)的消息和一個(gè)指向代碼調(diào)用位置的超鏈接。 console.warn(object) //在控制臺(tái)輸出一條帶有“警告”圖標(biāo)的消息和一個(gè)指向代碼調(diào)用位置的超鏈接。 console.error(object) //在控制臺(tái)輸出一條帶有“錯(cuò)誤”圖標(biāo)的消息和一個(gè)指向代碼調(diào)用位置的超鏈接。 console.dir(object) //以列表形式輸出一個(gè)對(duì)象的所有屬性,有點(diǎn)和你查看DOM窗口相類似。
2.運(yùn)算
var num = (5 + 2)*10; // 70 = + - * / %(取膜 ) ++ -- 10%3// 1 //注意一下這兩個(gè)區(qū)別 var i = 0; var num = i++;//0 var num1 = ++i;//1 //比較運(yùn)算 var count = 0; if(count > 0){console.log("num 大于 0")}// JS比較運(yùn)算符中: == === !== != < > null == undefined //true null === undefined //false
不同數(shù)據(jù)類型做比較時(shí)的一些規(guī)則
//邏輯運(yùn)算符 // && and (2 < 10 && 3 > 1) //true // || or (a || b) //只要一個(gè)為true,結(jié)果即為true // ! not var num = 0; !num //true(將num轉(zhuǎn)換為布爾值再取反);
3.javascript 關(guān)鍵字和保留字(備胎咯)
關(guān)鍵字 (用于標(biāo)識(shí)要執(zhí)行的操作): break、case、catch、continue、default、delete、do、else、finally、for、function、
if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void
保留字(當(dāng)前的語(yǔ)言版本中并沒(méi)有使用,但在以后 JavaScript 擴(kuò)展中會(huì)用到):abstract
boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int
4.注釋
//單行注釋 //console.log("num"); alert("error") // 單行末注釋 //塊注釋 /* document.getElementById("myH1").innerHTML="Welcome to my Homepage"; document.getElementById("myP").innerHTML="This is my first paragraph."; */
5.條件語(yǔ)句
if(isVVmusic){ //客戶端內(nèi) }else{ //端外 } if(sex == "男"){ console.log("小哥哥") }else if(sex == "女"){ console.log("小姐姐") }else{ console.log("薩瓦迪卡~") } switch(res.retCode){ case 1000: console.log("創(chuàng)建活動(dòng)成功!") break; case 1001: console.log("不在申請(qǐng)時(shí)間內(nèi)!") break; case 1002: console.log("userID不存在!") break; default: console.log("參數(shù)不正確"); } //有一種情況可能只是要根據(jù)條件去取一個(gè)值,比如toast的提示文案,這時(shí)用條件判斷顯得裹腳布又長(zhǎng)又臭的時(shí)候,可以考慮另一種方式比如: var toastTexts = { "1000":"創(chuàng)建活動(dòng)成功!", "1001":"不在申請(qǐng)時(shí)間內(nèi)!", "1002":"參數(shù)不正確", "1003":"userID不存在!", "1008":"比賽以結(jié)束", ...... } if(res && res.retCode){ let toast = toastTexts[res.retCode]; alert(toast); }
6.循環(huán)語(yǔ)句
for - 循環(huán)代碼塊一定的次數(shù)
for (語(yǔ)句 1; 語(yǔ)句 2; 語(yǔ)句 3){
被執(zhí)行的代碼塊
}
語(yǔ)句 1 (代碼塊)開始前執(zhí)行
語(yǔ)句 2 定義運(yùn)行循環(huán)(代碼塊)的條件
語(yǔ)句 3 在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行
for (var i =0 ;ifor/in - 循環(huán)遍歷對(duì)象的屬性
var res = { name:"劉德華", age:50, place:"hongkong" } for (var key in res){ console.log("%O : %O",key,res[key]); }while - 當(dāng)指定的條件為 true 時(shí)循環(huán)指定的代碼塊
var i =0; while (i<5) { if(i === 2) break; console.log("當(dāng)前數(shù)字是"+ i); i++; }do/while - 同樣當(dāng)指定的條件為 true 時(shí)循環(huán)指定的代碼塊
do/while 循環(huán)是 while 循環(huán)的變體。該循環(huán)會(huì)在檢查條件是否為真之前執(zhí)行一次代碼塊,然后如果條件為真的話,就會(huì)重復(fù)這個(gè)循環(huán)。
var i = 0; do{ console.log("number is "+ i) i++; } while (i<5);break 語(yǔ)句用于跳出循環(huán)。(不可以用于es6的forEach)
continue 用于跳過(guò)循環(huán)中的一個(gè)迭代。
JavaScript數(shù)據(jù)類型Javascript的數(shù)據(jù)類型可以分為:基本數(shù)據(jù)類型(值類型)和引用數(shù)據(jù)類型
值類型(基本類型):字符串(String)
數(shù)字(Number)
空(Null)
未定義(Undefined)
布爾(Boolean)
Symbol(*Symbol 是 ES6 引入了一種新的原始數(shù)據(jù)類型,表示獨(dú)一無(wú)二的值)
引用數(shù)據(jù)類型:對(duì)象(Object)
數(shù)組(Array)
函數(shù)(Function)
從上圖可以看出,基本數(shù)據(jù)類型保存的是具體的值,當(dāng)將a變量的值賦值給b變量,b變量之后的任何 操作就和a無(wú)關(guān)了;而當(dāng)把引用數(shù)據(jù)類型的值賦值給些個(gè)( C、D )變量,C得到的是一個(gè)引用地址,同樣D也是,當(dāng)操作C或者D中某一個(gè)的屬性時(shí),實(shí)際上是順著這條同樣的引用地址改了堆內(nèi)存中的值,因此其它引用了這一相同地址的變量再取自身當(dāng)中某屬性值時(shí),都是被更改過(guò)的。判斷數(shù)據(jù)類型typeof 123 //"number" typeof "abc" //"string" typeof true //"boolean" typeof undefined //"undefined" typeof null //"object" typeof { } //"object" typeof [ ] //"object" typeof console.log //"function"各類型常用的操作方法1.String
charAt 獲取字符串中指定位置的字符,若指定位置沒(méi)有,則返回空字符串
"let us play basketball!".charAt(0);//"l" 返回索引位置0處的字符 "let us play basketball!".charAt(100000);// "" 如果參數(shù) 大于 "string".length-1 (找不到)即返回 ""charCodeAt 獲取字符串指定位置字符的unicode編碼
"let us play basketball!".charCodeAt(1);// 101 "let us play basketball!".charCodeAt(1000) //NaN 如果參數(shù) 大于 "string".length-1 (找不到)即返回 NaNfromCharCode() 可接受一個(gè)或多個(gè)Unicode值,然后返回一個(gè)字符串。
String.fromCharCode(97, 98, 99, 100, 101); //"abcde"indexOf(string,start)用來(lái)檢索指定的字符串值在字符串中首次出現(xiàn)的位置。它可以接收兩個(gè)參數(shù),string表示要查找的子字符串,start表示查找的開始位置,省略的話則從開始位置進(jìn)行檢索。
"let us play basketball!".indexOf("us");// 4 "let us play basketball!".indexOf("us",5);// -1 找不到則返回-1lastIndexOf(string) 與indexOf類似,它返回的是一個(gè)指定的子字符串值最后出現(xiàn)的位置,其檢索順序是從后向前
"let us play basketball!".lastIndexOf("b");// 18 "let us play basketball!".lastIndexOf(" ",5);// 3 從索引為5處開始往前查找-search(substr/regexp) 檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。它會(huì)返回第一個(gè)匹配的子字符串的起始位置,如果沒(méi)有匹配的,則返回-1。
"let us play basketball!".search("us");// 4 "let us play basketball!".search(/us/);// 4 "let us play basketball!".search(/usb/);// -1subString(start,end) 從start位置截取到end位置截取字符串
"let us play basketball!".substring(4,6);// "us" //注意是包括開始項(xiàng)位置,不包括結(jié)束項(xiàng)位置 "let us play basketball!".substring(7);// "play basketball!" //第二個(gè)參數(shù)不傳,則默認(rèn)截取到最后一位 "let us play basketball!".substring(1000);//"" 參數(shù)大于字符串length時(shí)返回 ""slice(start,end) 與substring()方法非常類似,它傳入的兩個(gè)參數(shù)也分別對(duì)應(yīng)著開始位置和結(jié)束位置。而區(qū)別在于,slice()中的參數(shù)可以為負(fù)值,如果參數(shù)是負(fù)數(shù),則該參數(shù)規(guī)定的是從字符串的尾部開始算起的位置。也就是說(shuō),-1 指字符串的最后一個(gè)字符。
"let us play basketball!".slice(0,3);// "let" "let us play basketball!".slice(-5,-1);// "ball" //截取順序依然是從左到右replace(string/regexp,string) 字符串替換 第一個(gè)參數(shù)可以是字符串也可以是正則,將匹配到的內(nèi)容用第2個(gè)參數(shù)替換掉
"let us play basketball!".replace("us","me");// "let me play basketball!" "let us play basketball!".replace(/basketball/,"baseball");// "let us play baseball!" "let us play basketball!".replace(/ /g,"--");// "let--us--play--basketball!" 利用g修飾符全部替換split("") 按某字符將整個(gè)字符串拆分成數(shù)組,參數(shù)為字符串或者正則
"let us play basketball!".split(" ");//["let", "us", "play", "basketball!"] "let us play basketball!".split(/ /);//["let", "us", "play", "basketball!"]toLowerCase()和toUpperCase() 將字符串轉(zhuǎn)換成全部大寫或者全部小寫
"let us play basketball!".toUpperCase();//LET US PLAY BASKETBALL!"2.Array
push(arg1,arg2,arg3) 向數(shù)組后面依次添加新的一項(xiàng),返回的是新數(shù)組的長(zhǎng)度
var arr1 = [1,2,3]; arr1.push(3,4,5);//6 console.log(arr1);//[1, 2, 3, 3, 4, 5]pop() 刪除數(shù)組最后一項(xiàng),并且返回該項(xiàng)
var arr1 = [1,2,3]; arr1.pop();//3 console.log(arr1);//[1, 2]shift() 刪除數(shù)組第一項(xiàng),并且返回該項(xiàng)
var arr1 = [1,2,3]; arr1.shift();//1 console.log(arr1);//[2,3]unshift() 向數(shù)組開頭添加一項(xiàng),并且返回新數(shù)組長(zhǎng)度
var arr1 = [1,2,3]; arr1.unshift(0);// 4 console.log(arr1);//[0,1,2,3]concat() 將多個(gè)數(shù)組拼成一個(gè)新的數(shù)組,并返回新數(shù)組
var arr1 = [1,2,3], arr2 = [4,5,6], arr3; arr3 = arr1.concat(arr2); console.log(arr1);// [1,2,3] console.log(arr2);//[4,5,6] console.log(arr3);//[1,2,3,4,5,6]join() 把數(shù)組中的每一項(xiàng) 按照指定的分隔符拼接成字符串
var arr1 = ["let","us","play","basketball"]; var str1 = arr1.join(" "); console.log(str1);//"let us play basketball"splice 刪除數(shù)組中的任意項(xiàng) 返回值是被刪除的數(shù)組項(xiàng)(會(huì)改變?cè)瓟?shù)組)
var arr1 = ["let","us","play","basketball"]; var arr2 = arr1.splice(0,2); console.log(arr1);//?["play", "basketball"] console.log(arr2);?//["let", "us"]slice:復(fù)制數(shù)組 返回值是復(fù)制到的新數(shù)組 寫上數(shù)值之后 不包含被復(fù)制的最后一項(xiàng)(不改變?cè)瓟?shù)組)
var arr1 = [1,2,3,4,5,6]; var arr2 = arr1.slice(1,3); console.log(arr1);//?[1, 2, 3, 4, 5, 6] console.log(arr2);?//?[2, 3] 也是包括開始位置項(xiàng),不包括結(jié)束位置項(xiàng)reverse:倒序數(shù)組 返回值倒序數(shù)組 (原有數(shù)組改變)
var arr1 = ["a","b","c","d"]; var arr2 = arr1.reverse(); console.log(arr1);//["d", "c", "b", "a"] console.log(arr2);//["d", "c", "b", "a"]sort 數(shù)組排序
var arr1 = [1,5,6,8,2]; arr1.sort(function(a,b){return a-b});//[1, 2, 5, 6, 8] 升序 arr1.sort(function(a,b){return b-a});//?[8, 6, 5, 2, 1] 降序3.Object
hasOwnProperty():返回一個(gè)布爾值,表示某個(gè)對(duì)象是否含有指定的屬性,而且此屬性非原型鏈繼承。
var obj1 = {name:"kobe",age:18}; obj1.hasOwnProperty("name");//true obj1.hasOwnProperty("height");//falseisPrototypeOf():返回一個(gè)布爾值,表示指定的對(duì)象是否在本對(duì)象的原型鏈中。
var Plays = function(obj){ this.name = obj.name; this.age = obj.age; } var player1 = new Plays({name:"kobe",age:18}); console.log(Plays.prototype.isPrototypeOf(player1));//truepropertyIsEnumerable():判斷指定屬性是否可枚舉。
var obj1 = {a:1}; obj1.propertyIsEnumerable("a");//true obj1.propertyIsEnumerable("__proto__");//falsetoString():返回對(duì)象的字符串表示。
var obj1 = {a:1}; obj1.toString();//"[object Object]"watch():給對(duì)象的某個(gè)屬性增加監(jiān)聽。
unwatch():移除對(duì)象某個(gè)屬性的監(jiān)聽。
valueOf():返回指定對(duì)象的原始值。
4.Number
toFixed(x)——把數(shù)字轉(zhuǎn)換為字符串,x為小數(shù)點(diǎn)后位數(shù)
10.235233.toFixed(1);///10.2toPrecision(x)——把數(shù)字格式化為指定的長(zhǎng)度
23.3336.toPrecision(2);//23 111.toPrecision(2); //Uncaught SyntaxError: Invalid or unexpected tokenvalueOf()——返回值
var boo = new Boolean(false) document.write(boo.valueOf());//false以上就是我的分享內(nèi)容了!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103091.html
摘要:基礎(chǔ)鞏固基礎(chǔ)總結(jié)使用已經(jīng)好幾年了,由于工作主要是做服務(wù)端開發(fā),在工作中逐漸發(fā)現(xiàn)的使用范圍原來(lái)越廣泛。這里要注意,務(wù)必將基礎(chǔ)部分掌握牢靠,磨刀不誤砍柴功,只有將基礎(chǔ)部分掌握并建立起系統(tǒng)的知識(shí)體系,在后面學(xué)習(xí)衍生的其他模式才能游刃有余。 基礎(chǔ)鞏固:JavaScript基礎(chǔ)總結(jié) 使用JavaScript已經(jīng)好幾年了,由于工作主要是做服務(wù)端開發(fā),在工作中逐漸發(fā)現(xiàn)JavaScript的使用范圍原...
摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠?lái)都是中的主導(dǎo)范式。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠?lái)都是JavaScript中的主導(dǎo)范式。JavaScript作為一門多范式編程語(yǔ)言,然而,近幾年,函數(shù)式編程越來(lái)越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。因此,...
摘要:然而,雖然先生對(duì)無(wú)所不知,被譽(yù)為世界的愛因斯坦,但他的語(yǔ)言精粹并不適合初學(xué)者學(xué)習(xí)。即便如此,在后面我還是會(huì)建議把當(dāng)做補(bǔ)充的學(xué)習(xí)資源。但目前為止,依然是學(xué)習(xí)編程的好幫手。周正則表達(dá)式,對(duì)象,事件,閱讀權(quán)威指南第,,,章。 既然你找到這篇文章來(lái),說(shuō)明你是真心想學(xué)好JavaScript的。你沒(méi)有想錯(cuò),當(dāng)今如果要開發(fā)現(xiàn)代網(wǎng)站或web應(yīng)用(包括互聯(lián)網(wǎng)創(chuàng)業(yè)),都要學(xué)會(huì)JavaScript。而面對(duì)泛...
摘要:是文檔的一種表示結(jié)構(gòu)。這些任務(wù)大部分都是基于它。這個(gè)實(shí)踐的重點(diǎn)是把你在前端練級(jí)攻略第部分中學(xué)到的一些東西和結(jié)合起來(lái)。一旦你進(jìn)入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進(jìn)行操作。它是在前端系統(tǒng)像今天這樣復(fù)雜之前編寫的。 本文是 前端練級(jí)攻略 第二部分,第一部分請(qǐng)看下面: 前端練級(jí)攻略(第一部分) 在第二部分,我們將重點(diǎn)學(xué)習(xí) JavaScript 作為一種獨(dú)立的語(yǔ)言,如...
摘要:百煉成仙走紅該書于年月出版,作者楊逸飛是一名從事開發(fā)六年的程序員,寫過(guò)諸多技術(shù)博客。作者在博客上對(duì)粉絲提出關(guān)于百煉成仙的問(wèn)題進(jìn)行了統(tǒng)一回復(fù),該博文持續(xù)占據(jù)熱榜第二,熱度達(dá)。 剛接觸編程的小伙伴,估計(jì)都想過(guò)把枯燥無(wú)聊的編程教材變成小說(shuō)讀的念頭,這不,說(shuō)曹操曹操就來(lái)了,真的有程序員用寫修仙小說(shuō)的...
摘要:首先,需要來(lái)理清一些基礎(chǔ)的計(jì)算機(jī)編程概念編程哲學(xué)與設(shè)計(jì)模式計(jì)算機(jī)編程理念源自于對(duì)現(xiàn)實(shí)抽象的哲學(xué)思考,面向?qū)ο缶幊淌瞧湟环N思維方式,與它并駕齊驅(qū)的是另外兩種思路過(guò)程式和函數(shù)式編程。 JavaScript 中的原型機(jī)制一直以來(lái)都被眾多開發(fā)者(包括本人)低估甚至忽視了,這是因?yàn)榻^大多數(shù)人沒(méi)有想要深刻理解這個(gè)機(jī)制的內(nèi)涵,以及越來(lái)越多的開發(fā)者缺乏計(jì)算機(jī)編程相關(guān)的基礎(chǔ)知識(shí)。對(duì)于這樣的開發(fā)者來(lái)說(shuō) J...
閱讀 1622·2023-04-26 02:43
閱讀 3040·2021-11-11 16:54
閱讀 1362·2021-09-23 11:54
閱讀 1181·2021-09-23 11:22
閱讀 2372·2021-08-23 09:45
閱讀 855·2019-08-30 15:54
閱讀 3107·2019-08-30 15:53
閱讀 3197·2019-08-30 15:53