/*關於模塊化的了解 非模塊化有以下缺點: 1.命名沖突 2.文件依賴
前端流行的模塊化:AMD requirejsCMD seajs服務器端的模塊化 CommonJS-----Node.js
一個文件即一個模塊模塊的導出 通過exports 和module.exports*/
var addTwo=function(a,b){ return parseInt(a)+parseInt(b);}/通過exports//exports.addTwo=addTwo;//module.exports/module.exports=addTwo;
//引入模塊
var module=require('filePath');
-
模塊文件的后綴: .js .json .node
加載優先級(不寫后綴的情況下).js->.json->.node
2.ES6
-
關於聲明變量let和const
//1.let聲明的變量不存在預解析
//2.let聲明的變量不允許重復(在一個塊級作用域內)
//3.ES6引入了塊級作用域,在塊級作用域中使用let 和const定義的變量,外部不可以訪問
//4.const 用來聲明常量,不允許重新賦值,聲明時必須初始化。 -
解構賦值:
/*變量的結構賦值*/
//數組的結構賦值
let [a,b,c,d]=[1,2,3,5];
console.log(a,b,c,d);
/*對象的結構賦值*/
/*let {name,age}={name:'小明',age:20};
console.log(name,age);*/
// 對象屬性別名
let {name:firstName,age}={name:'小明',age:20};
console.log(firstName,age);
let {sin,cos}=Math;
console.log(typeof sin);
console.log(typeof cos);
/*字符串的結構賦值*/
let[h,g,j]='jefiwi';
console.log(h,g,j); -
字符串的相關擴展:
1.includes()//判斷字符串是否包含字符串,第一個參數要判斷的字符串,第二個參數從索引為多少開始。
startsWith() endsWith()
2.模板字符串:
let person={
name:'xiaoming',
age:18,
school:'hanzhong'
}
let div=`
<div>
<span>${person.name}</span>
<span>${person.age}</span>
<span>${person.school}</span>
<span>${1+20}</span>
</div>`
console.log(div); -
函數擴展:
1.默認值. 2.參數解構賦值,3.rest參數 4...擴展符.
//默認值
function print(a=10,b=2,c=1){
let result=a+b+c;
console.log(result);
}
print();
//解構賦值
function foo({name='小明',age=18}={}){
console.log(name,age);
}
foo();
foo({name:'小紅',age:20});
//rest參數
function restParam(a,b, -
箭頭函數:
let foo=()=>console.log('你好');
foo();
//多個參數需要使用()包裹。
let foo=(a,b)=>{
let c=10;
console.log(a+b+c);
}
foo(20,30);
/*作為匿名函數傳遞*/
let arr=[20,30,45,56,30];
arr.forEach((element,index)=>{
console.log(element);
})
//箭頭函數的注意事項:
1.this取決於函數的定義,而不是調用。
2.箭頭函數不用new關鍵字
3.箭頭函數不可以使用arguments獲得參數列表,可以使用rest參數代替
let foo=( -
js中apply的用法。
盡管js的apply方法在平常的使用中並不多見,但是在某些地方使用的還是很有幫助性的,這里就和大家說兩個比較實用的例子: 1.數組最大最小值:var
min = Math.min.apply(
null, arr);
求數組中的最大最小值,js有相應的方法:Math.min(),Math.max(),但是這兩個方法有個不方便的地方就是其參數不能是數組,而是單個元素值,即(para1,para2,para3....)。所以使用就沒有那么方便了,但是我們可以使用這個方法:
2.數組合並。數組的合並也和求最值一樣,我們可以使用簡單的push(para1);進行循環push.但我們也可以使用比較簡單的方法:Array.prototype.push.apply(arrA, arrB); ``//將數組arrB push到數組 arrA中。
-
call和this的使用:
ECMAScript規范為所有函數都包含兩個方法(這兩個方法非繼承而來),
call
和apply
。這兩個函數都是在特定的作用域中調用函數,能改變函數的作用域,實際上是改變函數體內this
的值 。call 和 apply
語法 定義 說明 call(thisObj,Object) 調用一個對象的一個方法,以另一個對象替換當前對象。 call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象.如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj apply(thisObj,[argArray]) 應用某一對象的一個方法,用另一個對象替換當前對象。 如果 argArray 不是一個有效的數組或者不是 arguments 對象,那么將導致一個 TypeError。如果沒有提供 argArray 和 thisObj 任何一個參數,那么 Global 對象將被用作 thisObj, 並且無法被傳遞任何參數 -
arguments返回的是一個參數列表對象,使用時類似與數組,但不同於數組。