一.什么是javaScript?
1.與頁(yè)面進(jìn)行交互的腳本語(yǔ)言,具有較強(qiáng)的邏輯性.
二.javaScript語(yǔ)言的特點(diǎn)
1.腳本語(yǔ)言.javaScript是一種解釋型的腳本語(yǔ)言
2.基于對(duì)象
3.簡(jiǎn)單
4.動(dòng)態(tài)性
5.跨平臺(tái)性
三.javaScript的組成部分
1.核心(ECMAscript:歐洲計(jì)算機(jī)制造商協(xié)會(huì)) (語(yǔ)法規(guī)范:ECMA-262標(biāo)準(zhǔn))
2.BOM 瀏覽器對(duì)象模型(browser object model)
3.DOM 文檔對(duì)象模型(document object model)
四.<script>標(biāo)簽的屬性:
- src 表示要引入的外部文件
- type表示腳本語(yǔ)言的類(lèi)型 text/javascript,默認(rèn)值就是他
- language已廢棄.原來(lái)用于代碼使用的腳本語(yǔ)言.由于大多數(shù)瀏覽器忽略他,所以不要用了.
- defer:可選.(等頁(yè)面加載完成后,才執(zhí)行js)表示腳本可以延遲到文檔完全被解析和顯示后再執(zhí)行.由于大多數(shù)瀏覽器不支持,故很少用.
- charset:可選.表示通過(guò)src屬性指定的字符集.由于大多數(shù)瀏覽器忽略他,所以很少用它
- async:可選 ,能簡(jiǎn)單實(shí)現(xiàn)js的異步加載.
五.聲明變量
1.使用var關(guān)鍵字(variable:可變的量)
var uname; // undefined
uname="周杰倫"; // 賦值
2.聲明變量即賦值(推薦)
var uname="周杰倫";
3.聲明多個(gè)變量
var uname="周杰倫",age="20";
注意: 我們?cè)诙x變量的時(shí)候,盡可能的不要只聲明,不賦值,而是聲明的同時(shí)初始化一個(gè)值
六.數(shù)據(jù)類(lèi)型
1.基本的數(shù)據(jù)類(lèi)有6種
string 字符串類(lèi)(單引號(hào)或雙引號(hào)都是字符串),
number 數(shù)值類(lèi)型 (包含整型,浮點(diǎn)型),
boolean 布爾類(lèi)型(true/false),
null(頂級(jí)) Object,
undefined 未定義類(lèi)型,
object 對(duì)象類(lèi)型(array,function....)
null派生了undefined
//分2種類(lèi)型
1.值類(lèi)型 string,number,boolean,undefined
2.引用類(lèi)型 object,array,function
2.查看基本的數(shù)據(jù)類(lèi)型的方式
typeof uname 或 typeof(uname)
七 關(guān)鍵字:已經(jīng)被js內(nèi)部使用了的
八.保留字:雖然還沒(méi)被使用,但將來(lái)可能會(huì)被js內(nèi)部使用
image
九.變量的命名規(guī)范
1.只能是數(shù)字,字母,下劃線_,$
2.不能以數(shù)字開(kāi)頭
3.不能是關(guān)鍵字或保留字
4.嚴(yán)格區(qū)分大小寫(xiě)
5.見(jiàn)名思意,語(yǔ)義化
6.駝峰命名法.
a.大駝峰
var YourName=new Person();//用于表示對(duì)象
b.小駝峰
var yourName="周杰倫";//表示普通的變量
十.Boolean類(lèi)型的轉(zhuǎn)換規(guī)則:(牢記)
String:非空字符為true,空字符為false
Number:非0數(shù)值為true,0和NaN為false
Object:對(duì)象不為null則為true,null為false
Undefined:undefined為false
Number類(lèi)型
Number 類(lèi)型包含兩種數(shù)值:整型和浮點(diǎn)型.
NaN,即非數(shù)值(Not a Number)是一個(gè)特殊的值
==ECMAScript 提供了isNaN()函數(shù),用來(lái)判斷是不是NaN. isNaN()函數(shù)在接收到一個(gè)值后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值==
2.2類(lèi)型的自動(dòng)轉(zhuǎn)換
var sAge="18";
sAge-0;//自動(dòng)把字符串類(lèi)型的"18"轉(zhuǎn)變成數(shù)值類(lèi)型的18
2.3強(qiáng)制轉(zhuǎn)換法
1.Number(), String(), Boolean(),
字符串轉(zhuǎn)數(shù)字類(lèi)型:
parseInt()是把其他轉(zhuǎn)換為整型
parseFloat() 是把其他類(lèi)型轉(zhuǎn)換為浮點(diǎn)型(小數(shù))
十一.js運(yùn)算符的使用
1.算數(shù)運(yùn)算符:+, -, *, /, %(取余數(shù)mod )
2.字符串和變量的拼接: +
3.關(guān)系運(yùn)算符
< , > , < = , >= ,== , === , !=, !==
4.邏輯運(yùn)算符: &&與(且)九府、||或丶!非
// && 只要找到一個(gè)假的,就不往后面找
// ||只要找到一個(gè)真的,就不往后面找
// 又稱(chēng)為 短路運(yùn)算符,&&優(yōu)先.
var str =2||true&&false;
console.log(str)? 2
5.賦值運(yùn)算符:
= ,+= ,-= ,*= ,/= ,%=
6.自增.自減
++a ,先運(yùn)算,后賦值
a++,先取,后運(yùn)算
--a ,a--
//先自增,再乘法 最后+
var a =10;
var sum = ++a + a++ *2
//33
十二.特殊的面試題.
[]==[]; //false 2個(gè)[]不同對(duì)象的地址
[]!=[]; //true 2個(gè)[]不同對(duì)象的地址取反
[]==![]; //true "!"優(yōu)先,'![]'的值是false,接下來(lái)就是[]==false,比較
//由于右邊不是對(duì)象,是值類(lèi)型(boolean),所以左邊的[]要轉(zhuǎn)換值類(lèi)型(Number([]))
[]==false; //[]要轉(zhuǎn)換值類(lèi)型(Number([]))先轉(zhuǎn)數(shù)值0,再與右邊比較.
先解析[]==false為什么是true?他是經(jīng)歷了這個(gè)過(guò)程最終才為true的.
([]==false)--->([]===+0)--->(""==+0)--->(+0==+0)---> true
//Boolean([]),是true,因?yàn)閇]是object.
關(guān)于0.1+0.2=0.30000000000000004
我們知道椎瘟,計(jì)算機(jī)中存儲(chǔ)的都是二進(jìn)制的0和1,而我們現(xiàn)實(shí)中的數(shù)存入計(jì)算機(jī)中轉(zhuǎn)換為二進(jìn)制時(shí)有可能不能整除昔逗,也就是不能正好整除降传,所以用二進(jìn)制表示現(xiàn)實(shí)中的數(shù)并計(jì)算就產(chǎn)生了誤差。