您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Java Script中入門(mén)知識(shí)點(diǎn)有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
什么是JavaScript?
JavaScript是一種運(yùn)行在客戶(hù)端的腳本語(yǔ)言
功能 | 語(yǔ)句 |
---|---|
打印輸出 | console.log() |
彈出輸出框 | alert |
彈出輸入框 | prompt |
文件寫(xiě)入 | document.write(’’) |
小理論:
console.log可以輸出任何類(lèi)型的數(shù)據(jù),alert只能輸出String類(lèi)型的數(shù)據(jù),且只能輸出第一個(gè)數(shù)據(jù),如果alert輸出的是對(duì)象會(huì)自動(dòng)調(diào)用toString()方法。
聲明變量 var (name)
一些注意事項(xiàng)
一次聲明多個(gè)變量的時(shí)候必須用逗號(hào)進(jìn)行隔開(kāi),而且必須換行,寫(xiě)在同一行的多個(gè)聲明變量會(huì)無(wú)效。
未初始化的變量直接輸出結(jié)果是undfined
變量的命名規(guī)范: 字母數(shù)字下劃線(xiàn)美元符號(hào)(不以數(shù)字開(kāi)頭)
變量初始化中,單引號(hào)和雙引號(hào)沒(méi)有區(qū)別
JavaScipt是一種> 動(dòng)態(tài)/弱類(lèi)型 語(yǔ)言
Num數(shù)字型 | Boolean布爾型 | Str字符串型 | Undefined未知的值 | Null空 |
---|
js的變量數(shù)據(jù)類(lèi)型是只有程序在運(yùn)行過(guò)程中,根據(jù)等號(hào)右邊的值來(lái)確定的,也被稱(chēng)為動(dòng)態(tài)數(shù)據(jù)類(lèi)型
常用語(yǔ)句:
IsNAN() //判斷值是否為非數(shù)字 //轉(zhuǎn)義符: \n換行 \t縮進(jìn) \b空格 str.length //獲取字符串長(zhǎng)度
小理論
undefined和數(shù)字相加,結(jié)果是NaN
null+1等于1
prompt取過(guò)來(lái)的值是字符型.
對(duì)于prompt取值做加法,有以下加法案例:
//demo onevar a, b ;a = parseInt(prompt('請(qǐng)輸入第一個(gè)值')); b = parseInt(prompt('請(qǐng)輸入第二個(gè)值')); var c = a + b; alert (c); //demo two var a = prompt('請(qǐng)輸入第一個(gè)值'); var b = prompt('請(qǐng)輸入第二個(gè)值'); var c = Number(a) + Number(b); alert (c);
字符串轉(zhuǎn)換(chrom顏色為黑)
變量.toString()
String()強(qiáng)制轉(zhuǎn)換
隱式轉(zhuǎn)換:+拼接
字符串模板拼接 我的年齡是${age}歲
(注意反引號(hào)不要掉了)
數(shù)字型轉(zhuǎn)換(chrom顏色為藍(lán))
Parselnt()轉(zhuǎn)換為整數(shù)型
parseFloat()轉(zhuǎn)換為浮點(diǎn)型
Number()強(qiáng)制轉(zhuǎn)換函數(shù)
隱式轉(zhuǎn)換:- * / 算術(shù)運(yùn)算隱式轉(zhuǎn)換
布爾型轉(zhuǎn)換(chrom顏色為藍(lán))
空、否定會(huì)被轉(zhuǎn)換為false:如 ‘’、 0 、 NaN 、 null 、 undefined
其余全部為true
優(yōu)先級(jí):
括號(hào)
單目 (右結(jié)合右至左)
算數(shù)*/%
位移
關(guān)系
相等
邏輯&^| &&||
賦值
逗號(hào)
if沒(méi)什么好說(shuō)的
switch注意事項(xiàng):
case的值判斷是全等運(yùn)算判斷
創(chuàng)建數(shù)組的方式
1.利用new創(chuàng)建數(shù)組
var arr = new Array() //注意的是,new A必須大寫(xiě) var arr = new Array(2); //表示數(shù)據(jù)長(zhǎng)度2 var arr = new Array(2, 3); //表示里面有兩個(gè)元素是2和3
2.利用字面量創(chuàng)建數(shù)組
var arr = [];
3.獲取數(shù)組的長(zhǎng)度
arr.length
也可通過(guò)arr.length = (Number)的方式來(lái)修改數(shù)組長(zhǎng)度
注意點(diǎn):
多余的地址/空地址/未定義數(shù)組元素默認(rèn)值為undefined
拿C語(yǔ)言舉例,字符數(shù)組默認(rèn)后面都是有一個(gè)\0結(jié)束的,而下標(biāo)越界會(huì)導(dǎo)致程序錯(cuò)誤,JS這樣設(shè)置的好處就是可以不定義數(shù)組長(zhǎng)度,或者預(yù)先給到地址空間。
4.實(shí)現(xiàn)數(shù)組遷移,從而不需要定義索引/下標(biāo)變量
newArry[new.Arry.length] = arr[i++];
1.判斷數(shù)組
// var arr = []; arr instanceof Array //Instanceof運(yùn)算符判斷是否為數(shù)組 Array.isArray(arr) //isArray判斷是否為數(shù)組
2.添加數(shù)組元素
arr.push() //在數(shù)組最后添加一個(gè)或多個(gè)數(shù)組元素 arr.unshift() //在數(shù)組最前面添加一個(gè)或多個(gè)數(shù)組元素
實(shí)用:push可以實(shí)現(xiàn)給新的空數(shù)組賦值,且push和unshift都有返回值,為新數(shù)組的length
3.刪除數(shù)組元素
arr.pop() //刪除數(shù)組中最后一個(gè)元素 arr.shift() //刪除數(shù)組中第一個(gè)元素
有返回值,為刪除的元素值
4.翻轉(zhuǎn)/逆置數(shù)組
arr.reverse()
5.數(shù)組排序
arr.sort() //對(duì)個(gè)位數(shù)進(jìn)行冒泡排序
理論:為什么說(shuō)是對(duì)個(gè)位數(shù)進(jìn)行冒泡排序,因?yàn)閟ort比較數(shù)組會(huì)先把數(shù)組轉(zhuǎn)換成字符串,所以77會(huì)比8更先,但是如果有了比較函數(shù)(compareFunction)的指定,就能實(shí)現(xiàn)按要求排列
arr.sort解決方案
arr.sort(function(a,b)) { return a - b; //return b - a
a - b為升序排序,b - a為降序排序
6.查找數(shù)組
arr.indexOf('word');
從前往后查找返回?cái)?shù)組滿(mǎn)足條件第一個(gè)元素的索引號(hào),如果找不到則返回-1
arr.lastIndexOf('word');
從后往前查找返回?cái)?shù)組滿(mǎn)足條件第一個(gè)元素的索引號(hào),如果找不到則返回-1
7.轉(zhuǎn)換成字符串
arr.toString() //數(shù)組轉(zhuǎn)換成字符串 arr.join() //將數(shù)組轉(zhuǎn)換成字符串,且括號(hào)內(nèi)可以寫(xiě)分隔符,表示用什么符號(hào)格式進(jìn)行分隔 arr.join('&')
Arguments 偽數(shù)組 只有在函數(shù)中能夠使用
同樣按照下標(biāo)的方式存儲(chǔ)數(shù)據(jù),可以不定義長(zhǎng)度實(shí)現(xiàn)形參接收
聲明函數(shù):
Function 函數(shù)名 () { }
var 變量名 = Function () { }
函數(shù)表達(dá)式(匿名函數(shù))
預(yù)解析:
就是把JS中所有的var和function提到當(dāng)前作用域的最前面
變量預(yù)解析
提前所有的變量聲明(不提賦值操作)
函數(shù)預(yù)解析
提前所有的函數(shù)聲明(不調(diào)用函數(shù))
→ 所以要額外注意函數(shù)表達(dá)式和聲明函數(shù)的預(yù)解析
如果形參多于實(shí)參,按前取;如果有實(shí)參沒(méi)有被傳值,默認(rèn)是undefined
Return返回一個(gè)值,但是如果return[ ] 且有多個(gè)表達(dá)式以逗號(hào)隔開(kāi),那返回值會(huì)是整個(gè)[]的 所有 運(yùn)算結(jié)果
?。∪绻瘮?shù)沒(méi)有返回值,那么返回的是undefined !!
在函數(shù)內(nèi)部直接賦值的變量屬于全局變量
函數(shù)的形參是局部變量
塊級(jí)作用域: {} (es6新增,其他版本在括號(hào)里面定
義的變量也能在外面調(diào)用)
作用域鏈:多個(gè)函數(shù)嵌套的時(shí)候會(huì)形成作用域鏈,子函數(shù)能訪(fǎng)問(wèn)父函數(shù)的塊作用域
什么是對(duì)象?
對(duì)象是一組無(wú)序的相關(guān)屬性和方法的集合(字符串,數(shù)值,數(shù)組,函數(shù))
在其他語(yǔ)言中,類(lèi)似 >結(jié)構(gòu)體 >字典
創(chuàng)建自定義對(duì)象和對(duì)象屬性、對(duì)象方法:
字面量創(chuàng)建
var obj = { name:'姓名', age : 999, //*方法*冒號(hào)后跟一個(gè)*匿名函數(shù)* printf:function() { console.log('hello world'); } }
記憶方法↓:
直接給對(duì)象名、屬性冒號(hào)跟值+語(yǔ)句結(jié)束逗號(hào)
方法用冒號(hào)
取值:對(duì)象名.屬性名 or 對(duì)象名[‘屬性名’]
調(diào)用對(duì)象方法: 對(duì)象名.方法名();
new object
var obj = new Object(); obj.name = '李昂'; obj.age = 999; obj.printf:function(){ console.log('hello world'); }
記憶方法↓:
var對(duì)象名 = new Object (); 不加分號(hào)
對(duì)象名.屬性 = 取值 + 分號(hào)
方法用冒號(hào)
取值:對(duì)象名.屬性名 or 對(duì)象名[‘屬性名’]
調(diào)用對(duì)象方法: 對(duì)象名.方法名();
3.構(gòu)造函數(shù)
function Obj (Uname, Uage) { this.name = Uname; this.age = Uage; this.printf = function(infoms){ console.log(infoms); } }
記憶方法↓:
類(lèi)似函數(shù)聲明,但是構(gòu)造函數(shù)函數(shù)名首字母必須大寫(xiě),this.屬性
方法用等號(hào)
構(gòu)造函數(shù)必須得有變量傳值,構(gòu)造函數(shù)的方法也必須有變量傳值
調(diào)用構(gòu)造函數(shù) var 變量 = new 構(gòu)造函數(shù)名(傳遞的值)
var myobj = new Obj('李昂', '999');//可以理解為創(chuàng)建了一個(gè)變量指定了構(gòu)造函數(shù) console.log(myobj.name); console.log(myobj['age']); obj.printf('hello world');
new的執(zhí)行過(guò)程
new構(gòu)造函數(shù)會(huì)在內(nèi)存中創(chuàng)建一個(gè)空的對(duì)象
this就會(huì)指向剛才創(chuàng)建的對(duì)象
接著依次執(zhí)行屬性、方法,并返回
新循環(huán)遍歷
For (變量 in 對(duì)象){
}
這里的變量是屬性值做遍歷
屬性的值的輸出:consolo.log(對(duì)象[變量]);
程序員在for in 的變量喜歡寫(xiě)Key或者i
一些可用內(nèi)置對(duì)象:
Math.PI //求圓周率 Math.max()//返回最大數(shù)值(如果無(wú)值返回負(fù)無(wú)窮大) Math.abc ()//取絕對(duì)值 Math.floor()//向下取整 Math.ceil()//向上取整 Math.round()//四舍五入(五特殊 往大了?。?/pre>
隨機(jī)數(shù)
Math.random() ;
返回一個(gè)隨機(jī)浮點(diǎn)數(shù)【0,1)括號(hào)里不跟參數(shù)
↓ 擴(kuò)展:得到自定義最大值和最小值中間的隨機(jī)函數(shù)
Function getRandomInt(min, max) { min = Math.ceil(min); //規(guī)范值語(yǔ)句 可省 max = Math.floor(max); //規(guī)范值語(yǔ)句 可省 return = Math.floor(Math.random() * (max - min + 1) + min);
new Date()調(diào)用日期對(duì)象 不跟參數(shù)返回系統(tǒng)時(shí)間
(‘2021-10-10 8:00:00’)字符串輸出
(2021, 10, 10)數(shù)字輸出 月份從0開(kāi)始11結(jié)束 故而要在月份的基礎(chǔ)上+1
變量.getDay()獲取當(dāng)前星期,星期日從0開(kāi)始 到星期六6結(jié)束 獲取到的值是一個(gè)數(shù)字
↓規(guī)范獲取當(dāng)前時(shí)間 demo
var date1 = new Date; var year = date1.getFunllYear(); var month = date1.getMonth(); var dates = date1.getDate(); var day = date1.getDay(); var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; alert('今天的日期是:' + year + '年' + (month+1) + '月' + dates + '日' + arr[day]);
==值得注意的是,必須使用變量調(diào)用Date這個(gè)構(gòu)造函數(shù)
就是把簡(jiǎn)單數(shù)據(jù)類(lèi)型包裝成復(fù)雜數(shù)據(jù)類(lèi)型,這樣基本數(shù)據(jù)類(lèi)型就有了屬性和方法,那么一般來(lái)說(shuō)在瀏覽器里面JS引擎會(huì)自動(dòng)幫我們把簡(jiǎn)單數(shù)據(jù)類(lèi)型包裝成復(fù)雜數(shù)據(jù)類(lèi)型
var str = 'lion'; console.log(str.length); //JS如何給我們的數(shù)據(jù)包裝 var temp = new String('lion');//定義一個(gè)臨時(shí)構(gòu)造函數(shù)包含初始化的字符串 str = temp; //把構(gòu)造函數(shù)賦給值類(lèi)型 temp = null; //最后舍棄臨時(shí)變量
一些可用的字符串內(nèi)置對(duì)象
查找字符串
str.indexOf('要查找的字符串',[起始位置]); //demo: var str = '我的名字是什么,名字不重要'; console.log(str.indexOf('名字', 3));
查找指定字符
str.charAt(0); //返回指定下標(biāo)的字符 str.charCodeAt(0); //返回指定下標(biāo)的ASCII碼
拼接字符串
str.concat('word') //拼接字符串(開(kāi)發(fā)中隱性拼接居多)
查找某一連續(xù)字符
str.substr('抓起始位置', '抓幾個(gè)字符'); //查找某一連續(xù)字符
替換字符
str.replace('被替換的字符', '替換為字符') //如果字符串中有重復(fù)的字符,只會(huì)替換第一個(gè)
字符串轉(zhuǎn)換成數(shù)組
split('分隔符') //把字符串轉(zhuǎn)換為數(shù)組(被轉(zhuǎn)換字符串中必須要寫(xiě)分隔符,而且要與split的分隔符統(tǒng)一!)
一些傳參和類(lèi)型的–
理論深入:
簡(jiǎn)單類(lèi)型又被稱(chēng)為基本類(lèi)型或者值類(lèi)型 因?yàn)榇鎯?chǔ)是值本身
系統(tǒng)自動(dòng)分配釋放存放函數(shù)的值,局部變量的值,被稱(chēng)為棧
復(fù)雜類(lèi)型又叫引用類(lèi)型 因?yàn)榇鎯?chǔ)的是地址 調(diào)用的時(shí)候需要專(zhuān)門(mén)引用
現(xiàn)在棧里面存放16進(jìn)制地址碼,然后指向堆里面的數(shù)據(jù)(對(duì)象實(shí)例),被稱(chēng)為堆復(fù)雜類(lèi)型傳參,如果不是傳值,傳的指針,也就是傳地址
特殊: Null返回的是一個(gè)空的對(duì)象(因?yàn)槌绦虻脑O(shè)計(jì)缺陷)
可以定義變量為Null,稍后再給值
關(guān)于“Java Script中入門(mén)知識(shí)點(diǎn)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。