初識JavaScript
JavaScript了解:
在1995年由Netscape公司的Brendan Eich驯嘱,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計實(shí)現(xiàn)而成。因?yàn)镹etscape與Sun合作按傅,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript延塑。但實(shí)際上它的語法風(fēng)格與Self及Scheme較為接近。
JavaScript概述:
JavaScript 是一種嵌入式(embedded)語言答渔。
JavaScript 是一種輕量級的腳本語言关带。它是單線程的語句(一個線程解析),是一門弱語言(沒有固定的類型劃分 你給定它的值是什么類型沼撕,它就是什么類型)宋雏,作為腳本語言它可以實(shí)現(xiàn)侵入xss攻擊。
JavaScript 是一種“對象模型”語言务豺。
它提供的額外 API 可以分成三大類磨总。
瀏覽器控制類:操作瀏覽器
DOM 類:操作網(wǎng)頁的各種元素
Web 類:實(shí)現(xiàn)互聯(lián)網(wǎng)的各種功能
它是怎么被解析的?有瀏覽器的的地方就能解析對應(yīng)的JavaScript笼沥,通過V8引擎實(shí)現(xiàn)蚪燕。
JavaScript包含的內(nèi)容:
構(gòu)成三方面:ESMA Script(基本語法及相關(guān)對象 es3、es5奔浅、es6馆纳、es7...),DOM(文檔對象模型 操作HTML)汹桦,BOM(瀏覽器對象模型 操作瀏覽器)
JavaScript的入門
書寫方式:
1鲁驶、書寫在script標(biāo)簽里面:
<script>? ?
//語句書寫? ?
console.log("hello world")
</script>
2、書寫在js文件里面(推薦)
console.log('hello world')
引入js文件
<scriptsrc="./index.js"></script>
3舞骆、書寫對應(yīng)的屬性里面(比較少用)
<ahref="javascript:void()">去百度</a>
<ahref="#"onclick="alert('hello world')"></a>
變量定義(使用var 關(guān)鍵詞聲明)
//var 變量名 = 值
varnumber = 10
變量名的書寫(見名知意 區(qū)分大小寫)
1钥弯、只能是對應(yīng)的字母或者數(shù)字或者下劃線等字符(不能以數(shù)字開頭)
2、一般采用駝峰命名法(hello World 采用單詞拼接 第一個單詞首字母小寫 其他單詞首字母大寫)
3督禽、不能使用關(guān)鍵詞
4脆霎、普通變量首字母小寫 常量全大寫(const)
注釋(相當(dāng)于解釋這句話 這個注釋不會被翻譯)
單行注釋 Ctrl + /
//單行注釋
多行注釋 Alt + Shift + A
/* 多行注釋 */
數(shù)據(jù)類型(檢驗(yàn)值類型 基本數(shù)據(jù)類型)
number類型(所有的數(shù)值)
字符串類型String(單引號 雙引號 都是字符串)
boolean類型(true false)
null 空類型(是null值的情況下才是空值)
undefined未定義(當(dāng)前沒有給值 沒有被定義)
object(對象類型 引用數(shù)據(jù)類型)
使用typeof來查看對應(yīng)的類型(基本數(shù)據(jù)類型返回的是對應(yīng)的類型名 null類型object)
//類型查看typeof 查看對應(yīng)的類型的 null顯示的是object undefined是對應(yīng)的null的對象擴(kuò)展
console.log(typeof nummber1);
console.log(typeof bool);
console.log(typeof un);
console.log(typeof nl);
console.log(typeof str);
類型轉(zhuǎn)換
number類型轉(zhuǎn)為String(string>number 隱式轉(zhuǎn)換 toString方法)
//將對應(yīng)的number類型轉(zhuǎn)為string類型
var strl = nummber1.toString();
console.log(typeof nummber1);
string轉(zhuǎn)為number(顯示轉(zhuǎn)換)
1、number方法(直接轉(zhuǎn)number類型)
2狈惫、使用parseInt(轉(zhuǎn)整型/整數(shù))
3睛蛛、使用parseFloat方法(轉(zhuǎn)小數(shù))
var str2 = "1a123.12a"
console.log(Number(str2));//當(dāng)你將一個內(nèi)容轉(zhuǎn)為的數(shù)值過程中無法被解析時就會出現(xiàn)NaN
//從前到后拿出里面的數(shù)值 前面沒有數(shù)值就會變成NaN
console.log(parseInt(str2));
console.log(parseFloat(str2));
isNaN 是NaN 返回true 不是返回false
var a = 10
console.log(isNaN(a)) //false
var str = 'abc'
console.log(isNaN(Number(str))) //true
無窮大 無窮小(Infinity)
//無窮大
var max = Infinity
console.log(max>100);? ??//true
//無窮小
var min = -Infinity
console.log(min<-1);? ??//true
將字符串轉(zhuǎn)為對應(yīng)的boolean類型
Boolean方法 轉(zhuǎn)為布爾類型
var str = "abc";
//轉(zhuǎn)為boolean類型 非空就是true 空字符串表示false
var b = Boolean(str); //true
var b2 = Boolean(); //false
console.log(b,b2);
將number轉(zhuǎn)為布爾類型
var number1 = 10;
//number轉(zhuǎn)布爾 非0即為true NaN
console.log(Boolean(number1));? //true
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //false
將undefined和對應(yīng)的null轉(zhuǎn)為boolean(false)
var un;
console.log(Boolean(un));? ? //false
console.log(Boolean(null));? //false
將boolean類型轉(zhuǎn)為number類型(false 0 true 1)
console.log(Number(false))
console.log(Number(true))
將對應(yīng)的undefined和null轉(zhuǎn)為number(0)
var un
console.log(Number(un));? ? ?//NaN
console.log(Number(null));? ??//0
預(yù)算符和表達(dá)式
算術(shù)運(yùn)算(加減乘除)
+? ?-? ?*? ?/? ? %? ? ++? ? --
自增和自減的前置和后置的區(qū)別:
前置先執(zhí)行對應(yīng)的++(--)再執(zhí)行對應(yīng)的代碼
后置先執(zhí)行對應(yīng)的代碼 再執(zhí)行++(--)
邏輯運(yùn)算
&&與(同true則為true)||或(有true就是true)虱岂!非(取反)
比較運(yùn)算
>? ?<? ?>=? ?<=? ?!=? ?===(全等倆個類型和對應(yīng)的值一模一樣這倆個是一個東西)
賦值運(yùn)算
=? ?+=? ?-=? ?/=? ?*=? ?%=
var j = 10
j + = 100????//110
j / = 10????//11
j * = 5????//55
console.log(j);
位運(yùn)算
>> 右移 << 左移 - 去除小數(shù)
計算順序 先括號里面的 再進(jìn)行乘除取余 再進(jìn)行+- 再進(jìn)行比較運(yùn)算 再邏輯運(yùn)算 再進(jìn)行賦值
三元運(yùn)算符(三目運(yùn)算符)
表達(dá)式(Boolean類型表達(dá)式)玖院?true的內(nèi)容:false的內(nèi)容
var a=10;
var b=20;
console.log(a > b ? 10 : 20);????//20
console.log('123a' / 10 ? 'hello' : 'hi');? ?//hi
number對應(yīng)的方法
保留幾位小數(shù)的方法
var number1 = 3;
var number2 = 10;
//默認(rèn)的大小是16位? 是2^-32? 整數(shù)位也是16位? 超出不能顯示(存在問題 后續(xù)解決)
console.log(number2 / number1);? ??//3.3333333333333335
//保留小數(shù)(方法會優(yōu)先調(diào)用)? 當(dāng)前這個方法會保留小數(shù)? 但是會變成字符串(黑色)
console.log((number2 / number1).toFixed(2));