標識符多了一個美元符號
python中只有字母和下劃線和數字,數字不能開頭
數據類型有number(整形和浮點型),boolean,string,null,undefined(聲明未賦值),symbol(新引入),object類型(基本類型和特殊類型外的其他類型)
引入一個變量要先申明,
var a,
let b
常量類型,聲明時定義,python中不存在
const c = 12
var 和 let 隱式表達了它的作用域,var默認全局,let默認代碼塊內部(大括號限定的區域,包括if,while,for語句)
但是如果聲明在函數中var也只是函數中的作用域
let 定義在外部,{}和函數內部一樣也可以調用
var相當于在python中的普通變量
let只是在塊中才會限定作用域
var,let,const 對函數對象也會起作用
比如 var add = function (x,y){ return x+y }
不同類型的相加和短路運算符的類型轉換
所有類型與字符串相加(可以交換)都是隱式轉換為字符串
與數值形相加,布爾形相當于1或0參與相加, null相當于0處理,還可以相減
布爾形自身相加減也是相當于1或0加
undefined與其他類型相加減,返回NaN都是數值型,NaN是number類型的一個特值
null是object的一個空值
定義了名字的塊,只能表示 enties的,分為key和value
for 語句
for (x in iters)
console(i) 打印對象的索引
for (x of iters)
console(x) 打印對象的值
經測試,使用他打印塊字典對象的值有異常
函數:
函數的參數,函數對參數要求非常的低,默認位置參數,沒有關鍵字傳參,形參沒有匹配的實參
默認為undified,多傳參不會出錯,收集參數(可變參數)…args要在形參的最后.
打印一個函數,python顯示
<function abc at 0x0000020553CDF7B8>
js顯示 [Function: abc]
ES6以前類的定義
function add(x,y){
this.x = x // –>用來構造實例的特征屬性或方法
this.y = y
console.log(this) // –>公共執行的代碼
let abs = x // –> 類的屬性,所有實例都有的屬性
}
打印一個 add 表示是一個函數,
執行普通調用 add(1,2)
實例化 ,使用new關鍵字 , a = new add(2,3), 調用的函數也可以叫做構造器
function addd(x,y,z){
add.call(this,x,y) //調用父類,調用后相當于繼承,第一個參數需要給this,否則不能繼承,后面的參數為,
this.z= z //傳進的實參參數,他會被收集賦給父類函數,調用以后可以進行后續的調用父類的屬性(只能調用實例屬性或函數)
console.log(this.x,this,y,this,z)
}
新式ES6以后
class Point {
constructor(){ // 相當于init,初始化對象時默認運行,一般用來賦值this屬性,可以接收參數
this.x = 1
this.y = 2
console.log(‘point’,this.x,this.y)
}
show(x,y){ // 使用類的對象調用,
console.log(x,y)
console.log(‘_point’)
this.z =3
}
}
p = new Point() 初始化
p.show(2,3) 調用非this屬性的函數方法,如果this屬性有相同名屬性優先調用屬性,而且要遵守調用它的格式
類的繼承
class Point3d extends Point{
constructor (x,y) { //可以如果不寫相當于調用了 constructor(){ super() }
super() //必須要寫,如果要傳參, 把實參寫入,它將被按序收集
} // 父類的this屬性可以被重寫
//父類的函數子類的實例可以調用,也可以被重寫
}
try/catch語句
try { //默認執行直到 throw對象,
console.log(‘try–‘)
throw ReferenceError(‘new error’); //throw的必須為一個對象(javascript不能理解一切皆對象),必須為基本
//throw console.log(‘–out’) //類型,或者object(函數,塊,類),最后null也不識別
console.log(‘–out’)
}catch (error) {
console.log(‘—–‘)
console.log(error,typeof(error)) // 只會顯示基本類型或者object
console.log(error.constructor) // 會顯示具體類型
}
數組的解構 使用中括號和變量名解構,類似函數對參數的解構要求,支持可變參數,支持默認值
塊字典的解構,要按照字典的鍵來解構,否則解構得到undefined
支持定義缺省值.支持收集參數,收集的值類型為object,且不需要有對應的鍵
數組的內建函數
arr.push(4,6,’fg’) 把參數添加進數組后面
arr.pop() 無參,彈出最后一個
newarr = arr.map(fn) 把數組的值依次作為參數放入fn中處理,獲得的返回值組成一個新的數組
newarr = arr.filter(fn) 過濾數組返回一個新的數組
arr.forEach(function (e){ 把數組的元素依次放入函數中執行
if(e%2==0){
newarr.push(e)
}
else{
newarr.push(0)
}
})
console.log(newarr)
塊字典的處理函數
Object.keys .values .entries
Object.assign() //將可以處理成鍵值對的都包裝合并成一個塊字典,后面的鍵會覆蓋前面的同名的鍵和值
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91120