javascript零基礎入門(小白)

1.js 歷史
JavaScript 作爲 Netscape Navigator 瀏覽器的一部分首次出現在 1996 年。它最初的設
計目標是改善網頁的用戶體驗。
作者:Brendan Eich
期初 JavaScript 被命名爲 LiveScript,後因和 Sun 公司合作,因市場宣傳需要改名
JavaScript。後來 Sun 公司被 Oracle 收購,JavaScript 版權歸 Oracle 所有。

2.瀏覽器組成
1.shell部分——用戶能操作部分殼
2.內核部分——用戶看不到的部分
1)渲染引擎(語法規則和渲染)
2)js引擎
3)其他模塊(如異步)

3.js引擎
2001年發佈ie6,首次實現對js引擎的優化。2008年Google發佈最新瀏覽器Chrome,它是採用優化後的javascript引擎,引擎代號V8,因能把js代碼直接轉化爲機械碼來執行,進而以速度快而聞名。後Firefox也推出了具備強大功能的js引擎Firefox3.5 TraceMonkey(對頻繁執行的代碼做了路徑優化)
Firefox4.0 JeagerMonkey

4.開始學習 js
js 三大部分 ECMAScript、DOM、BOM
如何引入 js?
1、頁面內嵌標籤,寫 head 裏面也行,寫 body 裏面也行
例:

<body>
<script type="text/javascript"> 
//告訴瀏覽器我們是 js
</script>
</body>

2、外部 js 文件,引入
例如:以 lesson.js 保存文件,再引入到 html 中
爲符合 web 標準(w3c 標準中的一項)結構(html)、行(js)、樣式(css)
相分離,通常會採用外部引入。
一個文件中可以包括多個 css,js——不混用
特殊寫頁面,大部分寫在外部——不混用
如果同時寫了內部的 js 和外部的 js,那麼是外部的 js 文件顯示出來

js 的逼格(特有特色)

編譯型語言 解釋性語言
怎麼做 通篇翻譯後,生成翻譯完的文件, 程序執行翻譯後的文件 看一行翻譯一行,不生成特定文件
代表語言 C,C++ JS,PHP,python 帶尖角號
優點 快(常用於系統,遊戲) 可以跨平臺
缺點 移植性不好(不跨平臺,window 和Linux 不能混用) 稍微慢點

js 是解釋性語言:(不需要編譯成文件)跨平臺
java 先通過 javac,編譯成.class 文件,通過 jvm(Java 虛擬機)進行解釋執行
.java→javac→編譯→.class→jvm→解釋執行(java 可以跨平臺)(java 是 oak 語言)

是異步加載 單線程:同一時間只能做一件事——js 引擎是單線程 (同一時間做很多事叫多線程) ECMA(歐洲計算機制造聯合會)標註:爲了取得技術優勢,微軟推出了 JScript, CEnvi 推出 ScriptEase,與 JavaScript 同樣可在瀏覽器上運行。爲了統一規格 JavaScript 兼容於 ECMA 標準,因此也稱爲 ECMAScript。 js 是輪轉時間片

在這裏插入圖片描述

主流瀏覽器(必須有獨立內核)市場份額大於 3% 內核名稱
IE trident
chrome webkit/blink
firefox gecko
opera presto
safari webkit

開始學習 js

js 三大部分 ECMAScript、DOM、BOM
如何引入 js?
1、頁面內嵌標籤,寫 head 裏面也行,寫 body 裏面也行

<body>
<script type="text/javascript"> 
//告訴瀏覽器我們是 js
</script>
</body>

2、外部 js 文件,引入
例如:以 lesson.js 保存文件,再引入到 html 中
爲符合 web 標準(w3c 標準中的一項)結構(html)、行爲(js)、樣式(css)
相分離,通常會採用外部引入。
一個文件中可以包括多個 css,js——不混用
特殊寫頁面,大部分寫在外部——不混用
如果同時寫了內部的 js 和外部的 js,那麼是外部的 js 文件顯示出來

js 基本語法
1、變量(variable)
HTML,css 不是編程語言,是計算機語言,編程語言需要有變量和函數
變量是存放東西,方便後續使用的框
1)變量聲明
1.聲明、賦值分解
var a; 這個叫變量聲明。我們向系統中申請了 var 這個框,命名叫 a 給 a 賦值 100,寫作 a =100,這裏不是等號是賦值
var a ;a =100;可以簡化寫成 var a=100;
2.單一 var 聲明法

在這裏插入圖片描述

如寫做:var a = 10;a=20;那麼後面的 20 就會覆蓋掉前面的 10
2)命名規則(用接近的英文單詞)———— 起變量名一定要以英文語義化
1.變量名必須以英文字母、、$ 開頭
2.變量名可以包括英文字母、
、$、數字
3.不可以用系統的關鍵字、保留字作爲變量名

在這裏插入圖片描述

基本語法

下面是變量,例:var a = 10;
var b = 20;
var c;
c = a + b;
先運算等號右邊的 a+b,運算完後,再賦值給左邊 c
先取值,再賦值
運算大於賦值的優先級
js 是動態語言,動態語言基本上都是解釋性語言,解釋性語言基本上都是腳本語言
js 是浮點型語言(帶小數點)
值類型(數據類型)
1、不可改變的原始值(棧數據)棧 stack
Number,String,Boolean,undefined,null
已經放進去的值不可改變,只會改房間編號爲 null(硬盤原理)
Number 數字,例 var a = 123;
String 字符串,語言放雙引號裏,例 var a=”語言”,““是空串
Boolean 布爾數字,就兩個值,false,true
undefined 是沒有定義的,表示還沒賦值,僅一個值 underfined
null 代表空,佔位用,用空值來覆蓋

例 var a =10;
var b = a;
a = 20;
document.write(b);
答案:10
原始值是我把一個值放到另一個值裏面,改了第一個值,第二個值不變
2、引用值(堆數據)大致上放堆 heap 裏面
array 數組, Object, function … data,RegExp 正則
var arr = [1,2,3,4,5,false,”abc”]; //這是數組
例:var arr = [1];
var arr1 = arr;
arr.push(2);
document.write(arr1);
答案:arr 是 1,2。arr1 是 1,2
引用值是把第一個值放到第二個值裏面,改第一個值,第二個值也改變
js 由值決定類型。原始值和引用值唯一的不同是賦值形式不同

在這裏插入圖片描述
var a = 10;var b =a;是 a 先取出 10,copy 一份放到 b 裏面,改變 a 的值,b 的值是不
變的,再把 a=20;時 b 的值還是 10,不發生改變
var arr = [1,2];var arr1 =arr;arr.push(3);
答案:這往[1,2]放 3,arr 和 arr1 都是[1,2,3]
引用值是在棧內存裏面放堆的地址,拷貝的也是地址,所以改變 arr,arr1 也變了
var arr = [1,2]; var arr1 =arr; arr = [1,3]; document.write(arr1)
答案:arr = [1,3];是新建了一個新的房間。arr1 是 1,2,現在是插入新引入值”房間”,
會在堆裏面重新申請一間房,並指向新房間

js 語句基本規則

1、語句後面要用分號結束“;”但 function test(){},for(){},if(){}後面都不用加分號
2、js 語法錯誤會引發後續代碼終止,但不會影響其它 js 代碼塊
錯誤分爲兩種
1)低級錯誤(語法解析錯誤),不能寫中文
2)邏輯錯誤(標準錯誤,情有可原,錯的那個執行不了)
3、書寫格式要規範,“= + / -”兩邊都應該有空格

js 運算符

一、運算操作符

  1. “+”作用:數學運算、字符串鏈接
    2.任何數據類型加字符串都等於字符串
    例 var a = “a”+ true + 1; //打印 atrue1
    例 var a = 1 + “a” + 1 + 1; //打印 1a11
    例 var a = 1 + 1 + “a” + 1 + 1; //打印 2a11,從左向右運算
    例 var a = 1 + 1 + “a” +( 1 + 2); //打印 2a3
    例 var a = 0 – 1; //等於-1 例 var a = 2 * 1; //等於 2 例 var a = 0 / 0; //答案是 NaN,應該得出一個數字類型的數,但是沒法表達,
    就用 NaN (NaN 是 Not a Number 非數,不是數,但是是數字類型
    例 var a = 1 / 0; //是 infinity
    例 var a = -1 / 0; /是-infinity

%,摩爾,模,是取餘數的意思
例 var a =5%2 //5%2 是五除二的餘數,商二餘一
例 var a =5%1 //是五除一的餘數,結果是 0 例 var num = 1 % 5; //意思是 1 除以 5 的餘數。商 0 餘 1 例 var a =4%6 //是四除六的餘數,結果是 4 例 var a = 4;a % = 5;document.write(a); // 4 例 var a = 0;a % = 5;document.write(a); //0 例 var a = 10;a %= 2;document.write(a); //0 例 var a = 3;a % = 4; //4 “-”,“*”,“/“,“%”,”=“,“()”

優先級”=“最弱【賦值符號優先級最低】,”()”優先級較高
“++”,“- -”,”+=“,“-=”,“/=“,“*=”,“%=”
++
例 var a = 10; a = a + 1; //結果 11
例 var a = 1;
a = a + 1;寫成 a ++是一種簡化形式“++”,是自身加一,再賦值給自身
a++是 a=a+1 的簡化形式
例 var a =10;document.write(++a );document.write(a); //答案 11;11
是先執行++,再執行本條語句 document.write(++a)
例 var a =1;document.write(a ++);document.write(a); //答案 1;2。是先執行
語句(document.write(a)),再++,所以第一次打印的還是 a,第二次打印 a++後的值
例 var a =10;var b=++a -1+a++;document.write(b + “ ” + a) //答案 21 12
先++a,這個時候 a=11,再-1,再加 a,b 就是 21,最後++,a 就是 12
賦值的順序自右向左,計算的順序自左向右(按數學來)
例 var a =1;var b = a ++ + 1;document.write(b); //答案 2,先執行 var b =a+1, 再 a++
例 var a =1;var b = a ++ + 1;document.write(a);document.write(b); //答案 2,2 例 var a =1;var b = ++a + 1;document.write(a);document.write(b); //答案 2,3 例 var i = 1;var a = i++; //答案 a = 1; 此時 i 先將值 1 賦給 a,然後自己+1,i=2;
var b = ++i; //答案 b = 3;此時 i 先自己+1 爲 3.再給 b 賦值,b=3;

“- -”,是自身減一,在賦值給自身
例 var a = 1;var b = a-- + – a;document.write(b);
//答案 0,先執行–a;此變成
0,然後第一個 a 也變成 0,那麼 b = 0-- + --a 例 var a = 1;var b = --a + --a;document.write(b);
//答案-1 例 var a = 1;document.write(a++);document.write(a);
//答案 1;2 例 var a = 1;document.write(++a);document.write(a); //答案 2;2 例 var a =1; var b = a ++ +1;document.write(b);
//答案 2 a 寫在後面就後運行,先計算 a+1=2 賦值給 b 後再++
例 var a = 1;var b= ++a + 1;document.write(a);document.write(b); //答案 2;3
+= -= 例 var a =10;a ++;a ++;a ++;加十個
簡化寫法:a +=10;也是 a = a+10;
例 var a =10;a += 10 + 1; //答案 21
例 var a = 1;a = a + 10;等於 a+=10
a++是 a +=1 的寫法
/=
例 var a=10;a/=2;
//答案 5,是除二賦給自身的意思

例 var a =10;a *=2; //答案:20,是乘二賦給自身的意思
%=
例 var a=10;a%=2; //答案:0, 10 能整除 2,餘數是 0,取餘,餘數賦給自身。
例 var a=3;a%=4; //答案:3,3 除以 4,餘數爲 3,餘數賦給自身。
例 var a=0;a%=4; //答案:0,0 除以 4,餘數爲 0,餘數賦給自身。
例 var a = 1;a% =10; //答案:1,1 除以 10,餘數爲 1,餘數賦給自身。

二、比較運算符

1、“>”,”<”,”==”,“>=”,“<=”,”!=”比較結果爲 boolean 值
但凡是運算符,都是要有運算的
用到布爾值,true 或 false
字符串的比較,比的是 ASCII 碼(七位二進制 0000000) >, < 例 var a = “a”>“b”;document.write(a); //答案是 false
例 var a = 1 > 2;document.write(a); //答案是 false
例 var a = 1 < 2;document.write(a); //答案是 true
例 var a = “1”>“8”;document.write(a); //答案是 false
例 var a = “10”>“8”;document.write(a); //答案 false,不是十和八比,是字符串一
零和八比,先用開頭的一和八比,比不過就不看第二位了;一樣的就拿零和八比
例 var a = 123;document.write(a); //答案 false
運算結果爲真實的值

= =,等不等於
例 var a = 1 == 2; //答案是說 1 等不等於 2,因爲 1 肯定不等於 2,所以值爲 false
例 var a = NaN == NaN; //答案是 false,NaN 不等於任何東西,包括他自己
例 var a = undefined == underfined; //答案是 true
例 var a = infinity == infinity; //答案是 true
例 var a = NaN == NaN; //答案是 false。非數 NaN 是不等於自己的
NaN 得不出數,又是數字類型,就是 NaN

!=是否不等於,非等
比較結果爲 boolean 值:true 和 false

三、邏輯運算符:“&&”,“||”,“!“運算結果爲真實的值

“&&”與運算符
兩個表達式:先看第一個表達式轉換成布爾值的結果是否爲真,如果結果爲真,那
麼它會看第二個表達式轉換爲布爾值的結果,然後如果只有兩個表達式的話,只看
看第二個表達式,就可以返回該表達式的值了,如果第一位布爾值爲 false,不看後
面的,返回第一個表達式的值就可以了
運算符就是要求結果
例 var a = 1 && 2; //答案 2,如果第一位 1 爲真,結果就爲第二位的值 2 例 var a = 1 && 2 + 2; //答案 4,如果 1 爲真,結果就爲 4 例 var a = 0 && 2 + 2; //答案 0 例 var a = 1 && 1 && 8; //答案 8,先看第一個是否爲真,爲真再看第二個,
中途如果遇到 false,那就返回 false 的值
例 var a =1 + 1 && 1 – 1;document.write(a); //答案 0
如果是三個或多個表達式,會先看第一個表達式是否爲真,如果爲真,就看第二個
表達式,如果第二個也爲真,就看第三個表達式(如果爲真就往後看,一旦遇到假
就返回到假的值),如果第三個是最後一個表達式,那就直接返回第三個的結果
如果第一個是假,就返回第一個值,當是真的時候就往後走,一旦遇到假,就返回
例:2>1 && document.write(‘成哥很帥’) //意思是如果 2 大於 1,那麼就打 印成哥很帥,如果前面真才能執行後面的(相當於短路語句使用)
&&與運算符是有中斷作用的,當短路語句使用(如果。。那麼。。) 例 var data = …; //執行一個語句,會用到 data
data&&執行一個語句全用到 data
例 data && function(data);

&與運算 我們一般不用
例 var num = 1 & 2;document.write(num); //答案 0 例 var num = 1 & 1;document.write(num); //答案 1 例 var num = 1 & 3;document.write(num); //答案 1

上下一與,不同爲 0,相同爲 1
1 在二進制中,是 1(爲了對齊補的 0) 0 1
3 在二進制中,是 11 1 1
運算結果 0 1

“||”或運算符
例 var num = 1 || 3; //答案 1 例 var num = 0 || 3; //答案 3 例 var num = 0 || false; //答案是 false
看第一個表達式是否爲真,如果爲真,則返回第一個值,碰到真就返回
如果第一個表達式是假,就看第二個表達式,如果第二個是最後一個,就返回第二
個的值
關注真假的說法:全假才爲假,有一個真就爲真
例 var num = 0 || false || 1;document.write(num); //答案 1 例 div .onclick = function(e){
非 IE 瀏覽器直接取 e 值
var event = e;
IE 瀏覽器存在 window.event;
}

div.onclick=function(e){IE瀏覽器
 var event=e;
 IE window.event;
}

寫成下面這樣就解決了兼容性。在所有的瀏覽器中都好使
div .onclick = function(e){var event = e || window.event;}

“!“非運算符,否的意思。
先轉成布爾值,再取反
例 var a = ! 123;document.write(a); //答案 false。123 的布爾值是 true,取反是 false
例 var a = ! “”;document.write(a); //答案 true。空串””布爾值是 false,取反是 true
例 var a = ! !“”;document.write(a); //答案 false,取反後,再反過來,結果不變
例 var a = true;a =!a;document.write(a) //答案 false,自身取反,再賦值給自身
!=非等於是表達他們到底等不等的
四、被認定爲 false 的值:轉換爲布爾值會被認定爲 false 的值 undefined,null,NaN,
“”(空串), 0, false

條件語句

一、If 語句 if、if else if if <—> && 轉換
if(條件判斷){
當條件成立時,執行裏面的執行語句
}當 if 的條件成立時,才能執行{}內的語句
當條件轉化爲布爾值,如果爲 true 就執行;如果爲 false 就不執行
例 if(1 < 2){document.write(“老鄧很醜”);}
例 if ( 1 > 0 && 8 > 9){}
&&放在 if 中的,全真才爲真,&&是並且的意思

例 if ( 1 > 0 || 8 > 9){}
||放在 if 中是或者的意思,有一個是真就可以了
例:

//90-100  alibaba
//80-90 tencent
//70-80 baidu eleme	 xiecheng
//60-70蘑菇街
//60以下你肯定不是我教的
<script text=javascript>
var score=parseInt(window.prompt('input'));
if(score > 90 && score<=100){
document.write('alibaba');
}
if(score > 80 && score<=90){
document.write('alibaba');
}
if(score > 70 && score<=80){
document.write('alibaba');
}
if(score > 60 && score<=70){
document.write('alibaba');
}
if(score < 60){
document.write('你不是我教的');
}
</script>

//不能寫 90<score<100,這樣寫會先比 90<score,等於 true 以後再跟 100 比
//else if 滿足了第一條就不看第二條了,用 else if 要滿足條件與條件之間互斥,不能
有交叉點。除了上面所有以外的。else if 除了這個以外,滿足第一個就不看了,不滿
足就看後面的
else if 除了這以外在看這個滿不滿足。滿足條件後就不看了
下面的寫法不夠簡潔
else 是上面這個條件的補集
簡潔寫法見下

if(score > 90 && score<=100){
document.write('alibaba');
}
else if(score > 80 && score<=90){
document.write('alibaba');
}
else if(score > 70 && score<=80){
document.write('alibaba');
}
else if(score > 60 && score<=70){
document.write('alibaba');
}
else(score < 60){
document.write('你不是我教的');
}

IF 和&&的互相轉化
if (1 > 2) {
document.write.(‘a’);
}上面與右邊效果完全一樣1 > 2 && document.write(‘a’);&&和II比較常用在條件判斷中

下一篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章