?彈出警告框 alert("這是我的第一行js代碼")
在網(wǎng)頁中顯示內(nèi)容 document.write("? ?")
向控制臺發(fā)送內(nèi)容
console.log("? ?")
編寫代碼一般在外部樣式j(luò)s中? ?樣式 script
多行注釋/* */ 單行注釋 //
字面量(常量)堪澎,都是一些不可改變的值
?比如 :1 2 3 4 5 "hello"
alert('123456')
var a ;//聲明定義一個(gè)變量? 默認(rèn)是undefined
a =898989 ;//給變量賦值
console.log(a)//通過控制臺輸出變量的值
標(biāo)識符 - 在JS中所有的可以由我們自主命名的都可以稱為是標(biāo)識符
? 標(biāo)識符中可以含有數(shù)字颠猴、字母、_旺矾、$
? 標(biāo)識符不能以數(shù)字開頭
? 標(biāo)識符不能是es中的關(guān)鍵字或保留字
? 標(biāo)識符一般采用駝峰命名法
數(shù)據(jù)類型指的就是字面量的類型
? 在JS中一共有六種數(shù)據(jù)類型
? 基本數(shù)據(jù)類型? ? ? String 字符串? ? ? Number 數(shù)值? ? ? Boolean 布爾值? ? ? Null 空值? ? ? Undefined 未定義
? 引用數(shù)據(jù)類型? ? ? Object 對象
? 其中String Number Boolean Null Undefined屬于基本數(shù)據(jù)類型
? 而Object屬于引用數(shù)據(jù)類型
? 用\'' 表示''
? \'? 表示'
? \n 換行? \t 制表? \\ 表示 \
在JS中所有的數(shù)值都是Number類型渣玲,
? 包括整數(shù)和浮點(diǎn)數(shù)(小數(shù))? Number.MAX_VALUE 數(shù)值型最大值? Number.MIN_VALUE 數(shù)值型最小值-Number.MAX_VALUE
? Infinity? 無窮大
parseFloat 轉(zhuǎn)化為小數(shù)
parseInt 轉(zhuǎn)化為整數(shù)
parseFloat(f)*100? 保留兩位小數(shù)
Boolean 布爾值
? 布爾值只有兩個(gè)逗概,主要用來做邏輯判斷true
? ? ? - 表示真false
? ? ? - 表示假
? 使用typeof檢查一個(gè)布爾值時(shí),會返回boolean? ? 除了0 和 空字符 會顯示False 其余為True
Null(空值)類型的值只有一個(gè)忘衍,就是null
? null這個(gè)值專門用來表示一個(gè)為空的對象
? 使用typeof檢查一個(gè)null值時(shí)逾苫,會返回object
Undefined(未定義)類型的值只有一個(gè),就undefind
? 當(dāng)聲明一個(gè)變量枚钓,但是并不給變量賦值時(shí)铅搓,它的值就是undefined
? 使用typeof檢查一個(gè)undefined時(shí)也會返回undefined
強(qiáng)制類型轉(zhuǎn)換
?- 指將一個(gè)數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為其他的數(shù)據(jù)類型
?- 類型轉(zhuǎn)換主要指,將其他的數(shù)據(jù)類型搀捷,轉(zhuǎn)換為 String Number Boolean
將其他的數(shù)據(jù)類型轉(zhuǎn)換為String
undefind 相當(dāng)于python中的none
將其他的數(shù)據(jù)類型轉(zhuǎn)換為Number
轉(zhuǎn)換方式一:
? 使用Number()函數(shù)
? 轉(zhuǎn)空字符串NaN
? 轉(zhuǎn)布爾類型true? 1? ? false? 0
? 轉(zhuǎn)數(shù)字和字符組合NaN
轉(zhuǎn)換方式二:? - 這種方式專門用來對付字符串? - parseInt() 把一個(gè)字符串轉(zhuǎn)換為一個(gè)整數(shù)? - parseFloat() 把一個(gè)字符串轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)
在js中星掰,如果需要表示16進(jìn)制的數(shù)字,則需要以0x開頭
? 如果需要表示8進(jìn)制的數(shù)字嫩舟,則需要以0開頭
? 如果要要表示2進(jìn)制的數(shù)字氢烘,則需要以0b開頭,但是不是所有的瀏覽器都支持
將其他的數(shù)據(jù)類型轉(zhuǎn)換為Boolean
? 使用Boolean()函數(shù)? ? ? - 數(shù)字 ---> 布爾? ? ? ? - 除了0和NaN至壤,其余的都是true
? ? ? - 字符串 ---> 布爾? ? ? ? - 除了空串威始,其余的都是true
? ? ? - null和undefined都會轉(zhuǎn)換為false
? ? ? - 對象也會轉(zhuǎn)換為true
運(yùn)算符
也叫操作符
? 通過運(yùn)算符可以對一個(gè)或多個(gè)值進(jìn)行運(yùn)算,并獲取運(yùn)算結(jié)果
? 比如:typeof就是運(yùn)算符,可以來獲得一個(gè)值的類型像街,它會將該值的類型以字符串的形式返回"number" "string" "boolean" "undefined" "object"
算數(shù)運(yùn)算符
? 當(dāng)對非Number類型的值進(jìn)行運(yùn)算時(shí),會將這些值轉(zhuǎn)換為Number然后在運(yùn)算
? 任何值和NaN做運(yùn)算都得NaN
+
? ? ? +可以對兩個(gè)值進(jìn)行加法運(yùn)算晋渺,并將結(jié)果返回
如果對兩個(gè)字符串進(jìn)行加法運(yùn)算镰绎,則會做拼串,會將兩個(gè)字符串拼接為一個(gè)字符串木西,并返回
? ? ? 任何的值和字符串做加法運(yùn)算畴栖,都會先轉(zhuǎn)換為字符串,然后再和字符串做拼串的操作-
? ? ? - 可以對兩個(gè)值進(jìn)行減法運(yùn)算八千,并將結(jié)果返回*
? ? ? * 可以對兩個(gè)值進(jìn)行乘法運(yùn)算/
? ? ? / 可以對兩個(gè)值進(jìn)行除法運(yùn)算%
? ? ? % 取模運(yùn)算(取余數(shù))
一元運(yùn)算符
只需要一個(gè)操作數(shù)
?+ 正號 - 正號不會對數(shù)字產(chǎn)生任何影響
?- 負(fù)號 - 負(fù)號可以對數(shù)字進(jìn)行符號的取反?
?- 對于非Number類型的值吗讶,它會將先轉(zhuǎn)換為Number燎猛,然后再運(yùn)算
?- 可以對一個(gè)其他的數(shù)據(jù)類型使用+,來將其轉(zhuǎn)換為number,它的原理和Number()函數(shù)一樣
自增++
? - 通過自增可以使變量在自身的基礎(chǔ)上增加1
? - 對于一個(gè)變量自增以后照皆,原變量的值會立即自增1
? - 自增分成兩種:后++(a++) 和 前++(++a)
? ? ? 無論是a++還是++a重绷,都會立即使原變量的值自增1
? ? ? 不同的是a++和++a的值不同? ? ? a++的值等于原變量的值(自增前的值)? ? ? ++a的值等于新值 (自增后的值)
自減--
? - 通過自減可以使變量在自身的基礎(chǔ)上減1
? - 自減分成兩種:后--(a--) 和 前--(--a)
? ? ? 無論是a--還是--a都會立即使原變量的值自減1
? ? ? 不同的是a-- 和 --a的值不同? ? ? ? a-- 是變量的原值 (自減前的值)? ? ? ? --a 是變量的新值 (自減以后的值)
對于自增和自減的練習(xí):
var n1=10;
var n2=20;
var n =n1++; //
console.log('n=' +n);? // 10
console.log('n1=' +n1); // 11
n = ++n1; //
console.log('n=' +n); // 12
console.log('n1=' +n1); // 12
n =n2--;//
console.log('n=' +n); // 20
console.log('n2=' +n2); // 19
n = --n2; //
console.log('n=' +n); // 18
console.log('n2=' +n2); // 18
JS中為我們提供了三種邏輯運(yùn)算符!
非 - !可以用來對一個(gè)值進(jìn)行非運(yùn)算 - 所謂非運(yùn)算就是值對一個(gè)布爾值進(jìn)行取反操作, true變false膜毁,false變true
? - 如果對一個(gè)值進(jìn)行兩次取反昭卓,它不會變化? - 如果對非布爾值進(jìn)行元素,則會將其轉(zhuǎn)換為布爾值瘟滨,然后再取反
所以我們可以利用該特點(diǎn)候醒,來將一個(gè)其他的數(shù)據(jù)類型轉(zhuǎn)換為布爾值
? ? ? 可以為一個(gè)任意數(shù)據(jù)類型取兩次反,來將其轉(zhuǎn)換為布爾值杂瘸,原理和Boolean()函數(shù)一樣&& 與? - &&可以對符號兩側(cè)的值進(jìn)行與運(yùn)算并返回結(jié)果? - 運(yùn)算規(guī)則? ? ? - 兩個(gè)值中只要有一個(gè)值為false就返回false萄凤,
? ? ? ? 只有兩個(gè)值都為true時(shí)窘行,才會返回true
? ? ? - JS中的“與”屬于短路的與,
? ? ? ? 如果第一個(gè)值為false,則不會看第二個(gè)值|| 或? - ||可以對符號兩側(cè)的值進(jìn)行或運(yùn)算并返回結(jié)果? - 運(yùn)算規(guī)則:? ? ? - 兩個(gè)值中只要有一個(gè)true病梢,就返回true
? ? ? ? 如果兩個(gè)值都為false,才返回false
? ? ? - JS中的“或”屬于短路的或
? ? ? ? 如果第一個(gè)值為true造虎,則不會檢查第二個(gè)值
&& || 非布爾值的情況 - 對于非布爾值進(jìn)行與或運(yùn)算時(shí)块攒,會先將其轉(zhuǎn)換為布爾值,然后再運(yùn)算南蹂,并且返回原值 - 與運(yùn)算: - 如果第一個(gè)值為true犬金,則必然返回第二個(gè)值 - 如果第一個(gè)值為false,則直接返回第一個(gè)值 - 或運(yùn)算 - 如果第一個(gè)值為true六剥,則直接返回第一個(gè)值 - 如果第一個(gè)值為false晚顷,則返回第二個(gè)值
=
? 可以將符號右側(cè)的值賦值給符號左側(cè)的變量+=
? a += 5 等價(jià)于a = a + 5
-=
? a -= 5 等價(jià)于a = a - 5
*=
? a *= 5 等價(jià)于a = a5
/=
? a /= 5 等價(jià)于a = a / 5
%=
? a %= 5 等價(jià)于 a = a % 5
通過關(guān)系運(yùn)算符可以比較兩個(gè)值之間的大小關(guān)系,
? 如果關(guān)系成立它會返回true疗疟,如果關(guān)系不成立則返回false
> 大于號? - 判斷符號左側(cè)的值是否大于右側(cè)的值? - 如果關(guān)系成立该默,返回true,如果關(guān)系不成立則返回false
>= 大于等于? - 判斷符號左側(cè)的值是否大于或等于右側(cè)的值< 小于號<= 小于等于
非數(shù)值的情況? - 對于非數(shù)值進(jìn)行比較時(shí)策彤,會將其轉(zhuǎn)換為數(shù)字然后再比較? - 如果符號兩側(cè)的值都是字符串時(shí)栓袖,不會將其轉(zhuǎn)換為數(shù)字進(jìn)行比較,而會分別比較字符串中字符的Unicode編碼
? 任何值與NaN作比較時(shí)都是false
在網(wǎng)頁中使用Unicode編碼: &#編碼;
相等運(yùn)算符用來比較兩個(gè)值是否相等店诗,
? 如果相等會返回true裹刮,否則返回false
使用 == 來做相等運(yùn)算? - 當(dāng)使用==來比較兩個(gè)值時(shí),如果值的類型不同庞瘸,則會自動進(jìn)行類型轉(zhuǎn)換捧弃,將其轉(zhuǎn)換為相同的類型,然后再比較
不相等
? 不相等用來判斷兩個(gè)值是否不相等,如果不相等返回true违霞,否則返回false
? ? ? - 使用 != 來做不相等運(yùn)算? ? ? - 不相等也會對變量進(jìn)行自動的類型轉(zhuǎn)換嘴办,如果轉(zhuǎn)換后相等它也會返回false
===
? 全等? - 用來判斷兩個(gè)值是否全等,它和相等類似买鸽,不同的是它不會做自動的類型轉(zhuǎn)換
? ? ? 如果兩個(gè)值的類型不同涧郊,直接返回false
!==
? 不全等? - 用來判斷兩個(gè)值是否不全等,和不等類似癞谒,不同的是它不會做自動的類型轉(zhuǎn)換
? ? ? 如果兩個(gè)值的類型不同底燎,直接返回true
條件運(yùn)算符也叫三元運(yùn)算符
語法:
? ? ? 條件表達(dá)式?語句1:語句2;
? - 執(zhí)行的流程:
條件運(yùn)算符在執(zhí)行時(shí),首先對條件表達(dá)式進(jìn)行求值弹砚,
? ? ? ? 如果該值為true双仍,則執(zhí)行語句1,并返回執(zhí)行結(jié)果
? ? ? ? 如果該值為false桌吃,則執(zhí)行語句2朱沃,并返回執(zhí)行結(jié)果
? ? ? 如果條件的表達(dá)式的求值結(jié)果是一個(gè)非布爾值,會將其轉(zhuǎn)換為布爾值然后在運(yùn)算
, 運(yùn)算符
? 使用,可以分割多個(gè)語句茅诱,一般可以在聲明多個(gè)變量時(shí)使用
? 括號的優(yōu)先級比較高
我們的程序是由一條一條語句構(gòu)成的
語句是按照自上向下的順序一條一條執(zhí)行的
? 在JS中可以使用{}來為語句進(jìn)行分組,
? ? ? 同一個(gè){}中的語句我們稱為是一組語句逗物,
它們要么都執(zhí)行,要么都不執(zhí)行瑟俭,
? ? ? 一個(gè){}中的語句我們也稱為叫一個(gè)代碼塊
? ? ? 在代碼塊的后邊就不用再編寫;了? JS中的代碼塊翎卓,只具有分組的的作用,沒有其他的用途
? ? ? 代碼塊內(nèi)容的內(nèi)容摆寄,在外部是完全可見的
DOM是為了操作文檔(網(wǎng)頁)的API失暴,document是它的一個(gè)對象BOM是為了操作瀏覽器的API,window是它的一個(gè)對象
常用BOM對象還有:alert微饥、定時(shí)器等
window.onload =function () {
document.getElementById('div').title='我看到了'
};
? var link1=document.getElementById('link1');
? link1.;
? link1.title ='去百度網(wǎng)頁';
console.log(link1.title);
console.log(link1.id);
通過js對網(wǎng)頁進(jìn)行換膚:
window.onload=function () {
var link1 =document.getElementById('link1');
? link1.href='css.css';
? console.log(link1.id)
}
通過創(chuàng)建點(diǎn)擊事件來進(jìn)行指定的換膚:
window.onload=function () {
var btn01 =document.getElementById('btn01');
? var btn02 =document.getElementById('btn02');
? btn01.onclick=skin01;
? ? ? ? ? btn02.onclick=skin02;
};
function skin01() {
var link1 =document.getElementById('link1');
? ? ? ? ? link1.href='css.css'
? ? ? }
function skin02() {
var link1 =document.getElementById('link1');
? ? ? ? ? link1.href='css1.css'
? ? }
通過js設(shè)置style屬性:
window.onload=function () {
var div1 =document.getElementById('div1');
? div1.style.color ='red';
? div1.style.background='pink';
? div1.style.fontSize ='30px';
}
通過js操作類屬性:
window.onload=function () {
var div =document.getElementById('div');
? div1.className ='box02'
}
在js中用中括號表示變量逗扒,如果HTML中的代碼也在中括號里需要加上引號標(biāo)注否則就會把它當(dāng)成一個(gè)變量來處理
document.innerHTML可以讀取網(wǎng)頁的內(nèi)容
document.write和innerHTML的區(qū)別
document.write只能重繪整個(gè)頁面
innerHTML可以重繪頁面的一部分
js創(chuàng)建函數(shù):
function aa(){
alert('hello!');
? }
// 在js中用function定義一個(gè)函數(shù)
// 調(diào)用函數(shù)通過函數(shù)名直接調(diào)用
// aa();
js中的變量是直接調(diào)用如果變量上面沒有對變量進(jìn)行賦值則變量就會返回一個(gè)默認(rèn)值,而函數(shù)可以完成預(yù)解析欠橘,只要代碼中有對函數(shù)的描述矩肩,就會返回描述的內(nèi)容