js Brendan(布蘭登) Eich 輕量級的編程語言(ECMAscript5或6), 是一種解釋性腳本語言(代碼不進行預編譯), 主要用來向HTML頁面添加交互行為, 目前是互聯網上最流行的腳本語言, 支持面向對象、命令式和聲明式(如函數式編程)風格, JavaScript,他和Python一 ...
js
Brendan(布蘭登) Eich
輕量級的編程語言(ECMAscript5或6),
是一種解釋性腳本語言(代碼不進行預編譯),
主要用來向HTML頁面添加交互行為,
目前是互聯網上最流行的腳本語言,
支持面向對象、命令式和聲明式(如函數式編程)風格,
JavaScript,他和Python一樣是一門編程語言,而瀏覽器內置了JavaScript語言的解釋器,所以JavaScript代碼在瀏覽器上就可以運行,
DOM,(Document Object Model)是指文檔對象模型,通過它,可以操作HTML文檔的相關功能,例如:對標簽內容進行刪除和替換等(非重點),
BOM,(Browser Object Model)是指瀏覽器對象模型,通過他,可以操作瀏覽器相關的功能,例如:瀏覽器設置定時器,瀏覽器定時刷新頁面。
三種js代碼引入方式
1 head標簽的script標簽裡面(alert('xx'), confirm('xx'))
2 body標簽的script標簽裡面 (建議底部)
3 外部文件引入的方式來使用
創建一個.js結尾的文件,寫上js代碼
比如:
alert('are you ok?');
在想使用這個js代碼的html文件中,body標簽底部導入
<script src="test.js"></script>
js基礎內容(會繼續更新)
alert("daoyou");
confirm("daoyou?");
JavaScript語法規則
變數
變數定義 var a = 100;
var 變數名,,
變數聲明,但沒有賦值的時候,變數的值為undefined
數據類型
number 整數,浮點數
var n = 11;
var n2 = 11.11;
string 字元串
var a = 'abcdef';
var a = new String('ss');
字元串操作
var s = 'hello';
索引取值: s[1] -- 'e' s.charAt(4); -- 'o' : s.substring(1,3); -- "el"
獲取長度:s.length;
移除兩端空格: s.trim(); s.trimLeft(); s.trimRight();
boolean 布爾
var a = true;
var b = false;
undefined和null類型
undefined 變數聲明瞭,但是沒有賦值,此時這個變數是undefined類型
null : 變數不用了,就可以給變數賦值為null,--- object類型
array 數組
var names = [11,22,33];
數組常用方法
names[0] // 索引,索引也是從0開始的
names.push(ele) // 尾部追加元素
示例:a.push('xx'); -- [11, 22, 33, "xx"]
names.pop() // 尾部移除一個元素
示例:a.pop(); -- [11, 22, 33]
names.unshift(ele) // 頭部插入元素
示例:a.unshift('ssss'); -- ["ssss", 11, 22, 33]
var ele = obj.shift() // 頭部移除一個元素
示例:a.shift(); -- [11, 22, 33]
names.splice(index,0,ele) // 在指定索引位置插入元素
names.splice(從哪刪(索引),刪幾個(個數),刪除位置替換的新元素(可不寫,可寫多個))
names.splice(index,1,ele) // 指定索引位置替換元素
names.splice(index,1) // 指定位置刪除元素
var names = [11,22,33];
names.splice(1,1,'xx','oo','asdf'); -- [11, "xx", "oo", "asdf", 33]
names.slice(start,end) // 切片
示例:a.slice(1,3);
names.reverse() // 原數組反轉
示例:a.reverse();
names.join(sep) // 將數組元素連接起來以構建一個字元串
示例: var a = ['ni','hao','ma',18]
a.join('+'); -- "ni+hao+ma+18"
names.concat(val,..) // 連接數組
示例: var a = [11,22]; var b = ['aa','bb']
var c = a.concat(b); c -- [11, 22, "aa", "bb"]
names.sort() (辣雞) // 對原數組進行排序 a.sort(compare); 升序排列
解決數組中數字排序的問題
a = [2,3,5,2,22,4,2,3,234,1]
function com(a,b){return a-b}; // 自定義排序規則
a.sort(com);
當a-b大於0時,會交換數組中的這兩個元素
一直交換直到返回值沒有大於0的
字典
自定義對象Object
JavaScript中其實沒有字典類型,字典是通過對象object構造出來的
info = {
name:'迪麗熱巴',
"age":18
1:123
}
var a = {username:'xx',password:'123'}; //鍵可以不加引號
// 鍵可以是數字,但取值時必須是info["1"]
var a = info['name']/a = info.name // 通過鍵取值必須加引號(info.name)
info['age'] = 20 // 修改
info['gender'] = 'male' // 新增
delete info['age'] // 刪除
查看數據類型
typeof 變數名;
typeof n;
註釋
單行//
多行 /**/
流程式控制制
if判斷
if (a == 1){ //判斷條件寫在小括弧裡面,大括弧裡面寫條件判斷成功後的代碼內容
console.log('1111'); (類似print)
}
else{
console.log('222');
}
多條件判斷
if(a > 1){
// console.log('1111');
// var hhhh = document.getElementById('d1');
// hhhh.innerText = '彭於晏';
}else if(a<1){
console.log('2222');
}else {
console.log('3333');
}
運算符
比較運算
> < == != >= <= === !==
var a = 2;
var b = '2';
a == b; true 弱等於
a === b; false 強等於
a != b; false
a !== b; true
算術運算
+ - * / % ++ --
++ 自增 1
-- 自減 1
var a = 2;
a++ 先執行邏輯 +1
++a 先+1 再執行邏輯
簡單示例:
if (++a === 4){ //(a++ === 3)
console.log('xxx');}
else{
console.log('ooo');};
switch判斷
用於判斷等於某些值(只能放數字)
var num = 200;
switch(num++){
case 10:
console.log('未成年');
break;
case 18:
console.log('成年');
break;
case 35:
console.log('老年');
break;
case 100:
console.log('....');
break;
default:
console.log('太大了');};
異常捕獲
try{
console.log(xx);
}
catch(e){
console.log(e);
}
finally{
console.log('sssss');
}
迴圈
for迴圈
var names = ['老男孩', '肖峰', '吳超']
for(var i=0;i<names.lenght;i++){ js里for變例的i為索引
console.log(i, names[i])
}
迴圈自定義對象--python字典
for (var i in d){
console.log(i,d[i]); #不要用d.i來取值,沒有 i 屬性
}
函數
普通函數
function f1(a,b){
return a+b;
}
// 執行: f1(1,2) -- 3
function f1(a,b){
return a,b;
};
f1(1,2); //不能返回多個值: 2
匿名函數
一般用於當做參數使用
function (arg){
return arg + 1;
}
——————————————————————————————
var a = function (a,b){
console.log('xxx');
}
var d = {'xx':'oo','f':function (a,b){
console.log('xxx');
}};
執行:d.f(1,2); -------'xxx'
自執行函數
一般用於做數據隔離使用,因為JS中是以函數為作用域,所以當js代碼比較多時,通過自執行函數做數據隔離
(function () {
alert('自執行函數!')
})()
JSON
JSON.stringify 序列化
var info = {name:'alex',age:19,girls:['鋼彈','鐵錘']}
var infoStr = JSON.stringify(info)
console.log(infoStr) # '{"name":"alex","age":19,"girls":["鋼彈","鐵錘"]}'
JSON.parse 反序列化
//反序列化時鍵不能是數字且必須有雙引號
var infoStr = '{"name":"alex","age":19,"girls":["鋼彈","鐵錘"]}'
var info = JSON.parse(infoStr)
console.log(info)
應用場景:
網路中數據傳輸本質上是基於字元串進行,如果想要把一個js的對象通過網路發送到某個網站,
就需要對對象進行序列化然後發送。(ajax會經常使用)
各語言之間數據類型不一定互通,需要一個中間人(json) python->json->...->json->java