一、什么是javascript
? ? javascript是一種運(yùn)行于js解釋器中的腳本語(yǔ)言
? ? javascript與html關(guān)系
? ? html是腳本語(yǔ)言,用于在瀏覽器中顯示
? ? javascript是腳本語(yǔ)言,用于與瀏覽器實(shí)現(xiàn)對(duì)話
二、javascript的發(fā)展史
? ? 1、1992年 , Nombas 為自己的軟件寫(xiě)一款腳本語(yǔ)言 C--? --》 ScritEase ,可以嵌入在網(wǎng)頁(yè)中運(yùn)行
? ? 2、1995年 ,Netscape(網(wǎng)景) Navigator2.0 --> LiveScript --> Javascript ,Java 與 Javascript之間沒(méi)有任何關(guān)系
? ? 3、1996年 ,Microsoft 在 IE3.0 中發(fā)布 JS的克隆版 --> JScript
? ? 4、1997年 ,Javascript 1.1 版本 作為 草案 提交給了? ECMA(歐洲計(jì)算機(jī)制造商聯(lián)合會(huì))
? ? ECMA-262標(biāo)準(zhǔn)? ECMAScript 作為 JS的 標(biāo)準(zhǔn)核心。 ES5? ES6
三、javascript的組成
? ? 1.ECMAScript
? ? 2.文檔對(duì)象模型(Dom,Document Object Model),讓js有能力與頁(yè)面元素對(duì)話
? ? 3.瀏覽器對(duì)象模型(Bom,Browser Object? ? ? Model),讓js有能力與網(wǎng)頁(yè)進(jìn)行對(duì)話
四、javascript的特點(diǎn)
? ? 1、編寫(xiě)簡(jiǎn)單 - 任何文檔編輯工具都可以編輯JS
? ? 2、無(wú)需編譯,直接運(yùn)行
? ? 3、弱類(lèi)型編程語(yǔ)言強(qiáng)類(lèi)型編程語(yǔ)言: C,C++,Java ...
特點(diǎn):由數(shù)據(jù)類(lèi)型來(lái)決定數(shù)值
弱類(lèi)型編程語(yǔ)言:JS
特點(diǎn):由數(shù)值來(lái)決定數(shù)據(jù)類(lèi)型
? ? 4、面向?qū)ο蟮木幊陶Z(yǔ)言
五、javascript的語(yǔ)法
? ? ? 1.在標(biāo)簽中寫(xiě)js代碼,該標(biāo)簽可以放在頁(yè)面的任何位置
? ? ? JS腳本
? ? ? 2.外部腳本文件
? 1)、創(chuàng)建腳本文件并編寫(xiě) 腳本
腳本文件:***.js
? 2)、引入外部腳本文件
注意:
1、必須是成對(duì)的 script
2、該對(duì)標(biāo)記中,不允許出現(xiàn)任何內(nèi)容
? ? 3.注釋
? ? ? ? ? 1)、單行注釋
? ? //? 單行注釋
? 2)、多行注釋
? ? /*
? ? * 多
? ? * 行
? ? * 內(nèi)
? ? * 容
? ? */
? ? 4.嚴(yán)格區(qū)分大小寫(xiě)
? ? ? ? ? console.log("");正確
? ? ? ? ? Console.log("");錯(cuò)誤
六、變量和常量
? 1.變量:內(nèi)存中的一段存儲(chǔ)空間
? 2. 變量的聲明
1)、聲明
? ? ? var 變量名;
2)、賦值
變量名=值;
3)、聲明變量并賦初始值
? ? var 變量名=值;
4)、注意
? ? ? 1、聲明變量時(shí)可以不加 var 關(guān)鍵字
? ? ? var stuname="張三豐";== stuname="張三豐";
如果省略了var 關(guān)鍵字, 那么聲明的就是"全局變量",有可能造成 "全局污染" 的效果
? ? ? ? 5)、如果聲明變量沒(méi)有賦值的話,那么將自動(dòng)賦值為 undefined
? 3、一次性聲明多個(gè)變量
聲明stuname,stuage,stugender 變量
? ? var stuname;
? ? var stuage;
? ? var stugender;
一次性聲明多個(gè)變量使用一個(gè)var 關(guān)鍵字, 多變量名之間 用 , 分隔
? var stuname, stuage,stugender;
4、變量的命名規(guī)范
1)、可以包含字母、數(shù)字、下劃線、$
var +name;? 錯(cuò)誤 ,不能有 +
2)、不能以數(shù)字開(kāi)頭
var 1name;? ? 錯(cuò)誤
var name1; 正確
var $name; 正確
var _name; 正確
3)、盡量見(jiàn)名知意
var a;
var b,c,d,e,f,g,aab,aac;
以上方式, 不推薦
var username;
var salary;
? 5、可以采用 "匈牙利命名法","駝峰命名法","下劃線命名法"
1、駝峰命名法
如果變量名是由多個(gè)單詞組成的合成詞,從第二個(gè)單詞開(kāi)始,每個(gè)單詞的首字符變大寫(xiě)。
var age;
var gender;
var salary;
var userName;
var userSalary;
var stuJavaScore
2、下劃線命名法
var _userName;? ? (一般用于全局變量命名)
var user_name;
常量:一旦聲明就不可以改變的值叫做常量
比如:1天=24小時(shí)? 1小時(shí)=60分鐘? 太陽(yáng)每天東升西落
? ? ? ? 1.聲明常量的方法:
? ? ? ? ? ? ? 1)聲明常量用 const,常量名一般大寫(xiě),聲明常量必須賦值
? ? ? ? ? ? ? ? ? const DAY;? ?
? ? ? ? ? ? ? ? const PI;
? ? ? ? ? ? ? 2)聲明常量并賦值
? ? ? ? ? ? ? ? ? ? const DAY=24;
? ? ? ? ? ? ? ? ? ? const PI=3.14;
js三種輸出方式
console.log('hello world');
? ? 控制臺(tái)輸出hello world
document.write('hello world');
? ? 頁(yè)面打印出hello world
alert('hello world');
頁(yè)面彈出helllo world
上面的兩部可以簡(jiǎn)寫(xiě)為
? var uname='張三';
在控制臺(tái)出輸出變量uname
console.log(uname);//正確
console.log('uname');//錯(cuò)誤。這樣輸出的是uname這串字,輸出一個(gè)變量不需要加引號(hào)
變量命名規(guī)范
每行后面加" ; 號(hào)"
變量名可以包含數(shù)字 字母 和下劃線? $
但不可以以數(shù)字和特殊符號(hào)開(kāi)頭
var name='張三';正確
var name1='張三';正確
var name_1='張三';正確
var $name='張三';正確
var 1name='張三';錯(cuò)誤
var +name='張三';錯(cuò)誤
var *name='張三';錯(cuò)誤
七、數(shù)據(jù)類(lèi)型
? ? js的數(shù)據(jù)類(lèi)型:
數(shù)字類(lèi)型(number)
字符串(string)
布爾(boolean)
? ? ? ? ? ? ? ? null(空)
? ? ? ? ? ? ? ? undefined(未定義)
對(duì)象(object)
? ? ? ? 1.數(shù)字類(lèi)型? number
數(shù)字類(lèi)型包括整數(shù)和小數(shù)
? ? ? ? 2. 字符串? string?
有引號(hào)單引或雙引的都是字符串類(lèi)型
? ? ? ? 3.布爾類(lèi)型? boolean
布爾類(lèi)型只有兩個(gè)值true 和 false,true表示真,false表示假
在做運(yùn)算的時(shí)候true為1? false 為0
? ? ? ? true+false=1
? ? ? ? 4.null? 空
? ? ? ? 5.undefined? 未定義
聲明變量沒(méi)復(fù)制返回undefined
? ? ? ? 6.object 對(duì)象
? ? ? ? ? ? ? ? ? ? var obj={};
? ? ? ? ? ? ? ? ? ? var arr=[];
八、數(shù)據(jù)類(lèi)型的轉(zhuǎn)換
? ? ? ? ? typeof
九、隱式轉(zhuǎn)換結(jié)論
1、數(shù)字 + 字符串 :將數(shù)字轉(zhuǎn)換為字符串
2、數(shù)字 + boolean :將 boolean 轉(zhuǎn)換為 number類(lèi)型
3、數(shù)字 + undefined :結(jié)果為 NaN,NaN的類(lèi)型為 number
4、字符串 + boolean :將boolean 轉(zhuǎn)換為 字符串
5、boolean + boolean :都轉(zhuǎn)換成number在做相加運(yùn)算
注:NaN:not a number? 判斷一個(gè)非數(shù)字? ? 如果不是一個(gè)數(shù)字返回true,如果是一個(gè)數(shù)字返回false
案例:var str="hello world";
? ? ? ? ? ? ? var str1=isNaN(str);
? ? ? ? ? ? ? console.log(str1);
二、顯示轉(zhuǎn)換/強(qiáng)制轉(zhuǎn)換
? ? ? ? ? ? ? 2.parseInt(); 將一個(gè)數(shù)據(jù)轉(zhuǎn)換為整數(shù)
? ? ? ? ? ? ? var? num=5.5;
? ? ? ? ? ? ? var str=parseInt(num);
? ? ? ? ? ? ? console.log(str);5
? ? ? ? ? ? ? console.log(typeof str);number
? ? ? ? ? ? 3.parseFloat();? 將一個(gè)數(shù)據(jù)轉(zhuǎn)換為小數(shù)?
? ? ? ? ? ? ? var? num=.5;
? ? ? ? ? ? ? var str=parseFloat(num);
? ? ? ? ? ? ? console.log(typeof str);//0.5
? ? ? ? ? ? ? console.log(typeof str);//number
? ? ? ? ? ? 4.Number? 將一個(gè)數(shù)據(jù)轉(zhuǎn)換為number類(lèi)型
? ? ? ? ? ? ? var str="35.5你好";
? ? ? ? ? ? ? var str1=Number(str);
? ? ? ? ? ? ? console.log(str);
? ? ? ? ? 5.toString()? 將任意類(lèi)型轉(zhuǎn)換為字符串類(lèi)型
? ? ? ? ? ? ? var? num=5;
? ? ? ? ? ? ? var str=num.toString();
? ? ? ? ? ? ? console.log(typeof str);
? ? ? ? ? ? toFixed(n)? ? 保留小數(shù)。
運(yùn)算符
? ? 1//算數(shù)運(yùn)算符;
? ? ? ? ? ? + - * /
%:模:兩個(gè)數(shù)相除的余數(shù)就是模
3%2=1
5%3=2
10%10=0
++;
++在前:自增加一,在賦值
var a=3;
var b=a++? ? ? 在后
var a=3;
var b=++a? ? ? 在前
++在后
++在后? :先賦值在加一
++在前:自增減一,在賦值
在后:先賦值在減一
2.關(guān)系運(yùn)算符
? ? > < >=? <=
等于 == 對(duì)應(yīng) !=
全等 === 對(duì)應(yīng) !==
3 邏輯運(yùn)算符:
? ? 與(和,且) &&
? ? 或 ||
? ? 非:相反 !
? ? 有假且為假 有真或?yàn)檎?/p>
三目運(yùn)算符
? ? var score=prompt('睡眠時(shí)間')
var result=score>=8?'正常':
'不正常';
alert(result);-->
分支結(jié)構(gòu)
if....else-->
if(條件){
? ? 條件為true的時(shí)候執(zhí)行的語(yǔ)句
? ? }
if(條件){
else
? ? 條件為false的時(shí)候執(zhí)行的語(yǔ)句
? ? }
4.switch? ......case...
switch(條件){
case 情況1:
//執(zhí)行的語(yǔ)句
break;
case 情況2:
//執(zhí)行的語(yǔ)句
break;?
case 情況3:
(執(zhí)行的語(yǔ)句)
break;
? }
var date = prompt('周周上分大全')
switch(date) {
case '星期一':
alert('武則天')
break;
case '星期二':
alert('李白')
break;
case '星期三':
alert('韓信')
break;
case '星期四':
alert('花木蘭')
break;
case '星期五':
alert('百里玄策')
break;
case '星期六':
alert('干將莫邪')
break;
case '星期日':
alert('小學(xué)生多不推薦打排位')
break;
default:
alert('重新輸入')
break;
}
var score = prompt('請(qǐng)輸入成績(jī)');
if(score>=100){
alert('國(guó)外三日游');
}else if(score>=90&&score<100){
alert('國(guó)內(nèi)三日游');
}else if(score>=80&&score<90){
alert('省內(nèi)三日游');
}else if(score>=70&&score<80){
alert('市內(nèi)三日游');
}else if(score>=60&&score<70){
alert('縣內(nèi)三日游');
}else if(score>=50&&score<60){
alert('鎮(zhèn)內(nèi)三日游');
}else if(score>=40&&score<50){
alert('打');
}else if(score>=30&&score<40){
alert('爆打');
}else if(score>=20&&score<30){
alert('吊打');
}else{
alert('狂打');
}
alert('國(guó)外三日游');
} else {
if(score >= 90)
alert('國(guó)內(nèi)三日游');
} else {
if(score >= 80) {
alert('省內(nèi)三日游')
} else {
if(score >= 70) {
alert('市內(nèi)三日游');
}
if(score >= 60) {
alert('縣內(nèi)三日游')
}if(score >= 50){
alert('鎮(zhèn)內(nèi)三日游')
}if(score >= 40){
alert('村內(nèi)三日游')
}if(score >= 30){
alert('家內(nèi)三日游')
}if(score >= 20){
alert('兩大嘴巴子')
}if(score >= 10){
alert('沒(méi)收手機(jī)999w秒')
}else{
alert('男女混合雙打')
}
}
}
}
使用運(yùn)算符
? var a=parseInt(prompt('第一個(gè)數(shù)'))
? var b=parseInt(prompt('第二個(gè)數(shù)'))
? var c=parseInt(prompt('第三個(gè)數(shù)'))
? alert(Number(a)+Number(b)+Number(c))
? alert(a*b/c)
? var a=5;
? var b=5;
var c=9;
console.log(a==b);
console.log(a>c);
console.log((a===b)||(c
console.log((a===b)&&(c
console.log((a===b)&&(c>a))
console.log(a<=b)
console.log(a!=b)
console.log(a)
隱式轉(zhuǎn)換
1.number+number
? ? var a=3;
? ? var b=5;
? ? console.log(a+b);
2.number+string 拼接
? ? var a=3;
? ? var b='5';
? ? var