Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:es5中的许多语法与php是类似的, 掌握之后有利于es6的学习
一、数组:
1、数组和对象区别:
2、数组的遍历(包含类数组和对象):
3、数组(索引数组)和对象(关联数组):可以在一个里面共存,但共存时,关联数组无法通过索引访问;
4、箭头函数:例如:arr.forEach(item=>console.log(item));
5、类数组:DOM
length
属性
Array.prototype.forEach.call(objArr, function (item){
console.log(item);
});
二、函数
1、函数:字面量和表达式(匿名函数);可以重复声明(但覆盖前面的)
2、构造函数使用来创造对象的,可以有任何函数构成,并不是都会创造出对像,除非用new
;通过Function
关键字来创建构造函数
3、函数一旦遇到return返回给调用者后面的语句全部忽略;return后面没有值和没有return的函数就是undefined;
4、函数的使用场景:
5、函数也是对象,对象就会有属性/方法
三、作用域
1、全局: global: 顶层函数之外声明的,可以在函数内访问
2、局部: local: 函数内部声明,仅限内部访问,外部不可见
3、函数内部声明变量如果不加var,就不能和当前的作用域绑定,自动与全局绑定
4、一对大括号就是一个块作用域:ES5不支持块作用域,ES6支持
5、js中允许不写参数,函数的参数:arguments或者剩余参数(…params)
6、闭包:用来访问函数的私有变量,父级函数作用被保留,闭包占内存;
一、代码
var arr=[
function(){
return 1;
},
function (name){
return name+'欢迎你';
}
];
console.log(arr[1]('你好'));
console.log(arr.length);
console.log(Object.keys(arr));
console.log(arr['0']);
var array=[1,2,3,4,5,6];
for(var i=0;i<array.length;i++){
console.log(array[i]);
}
array.forEach(function(item,key,array){
console.log(item);
});
var objArr = {
0: 'hello',
1: 200,
2: {x:1, y: 30},
3: null,
length: 4
};
// 类数组转化数组输出,但无法输出length的值
Array.prototype.forEach.call(objArr, function (item){
console.log(item);
});
console.log('^^^^^^^^^^^^^^^^^^')
function sum(a,b,c){
// 函数体
return a+b;
}
console.log(sum.name);
console.log(sum.length);
console.log(sum.toString);
function add(callback,a,b){
return callback(a,b);
}
console.log(add(sum,3,5));
var n=3;
function demo(){
var s='你好';
console.log(s);
console.log(n);
}
// console.log(s);//函数内部的变量,玩不无法访问。
console.log(n);
// 输出函数中的参数
function plus(){
return console.log(arguments)
}
plus(2,3,6)
//通过子函数访问夫函数中的私有变量
function abc(){
var name='ldy';
return function ad(){
return console.log(name);
};
}
console.log(typeof abc());
abc()();
2、演示结果: