目录
数组
数组的创建:new关键字或者字面量创建;
var arr = new Array(); // 创建了一个空的数组
var arr1 = [1, 2, 'pink老师', true]; //字面量创建
注意:数组的元素类型可以是任意元素,string/number/Boolean等
元素获取:数组名[index];
数组的长度:数组名.length;
遍历数组:for循环,利用元素的索引号遍历;
新增数组元素:利用索引值;
var arr = [1, 2, 3];
arr[3] = 4;
console.log(arr); //[1, 2, 3, 4]
var arr = [1, 2, 3];
arr[4] = 4;
console.log(arr); //[1, 2, 3, 空白, 4]
函数
分类及使用步骤
命名函数 | 匿名函数 | |
声明 | function 函数名(){ } | var fn = function(){ } |
使用 | 函数名(); | fn( ); |
函数名:驼峰命名法;动词;
形参与实参
形参:函数声明时的参数;
实参:函数调用时的参数;
注意:形参和实参的个数尽量匹配,避免出错;
arguments
不确定实参个数时候,可以用arguments来获取,他是函数的内置对象,存储了传递的所有实参;
arguments是伪数组:具有length属性,可以被索引,但不能使用数组的方法,如push、pop等;
function max() {
var max = 0;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
console.log(max);
}
max(5,3,7,1)
max(2,3,4,9,3)
return的两个作用
1.返回值:只能返回一个值,用逗号连接时以最后一个为准;
function getResult() {
return 666;
}
getResult();
console.log(getResult()); // 666
2.终止函数:return后面的语句不会被执行;
function getSum(num1, num2) {
return num1 + num2;
}
console.log(getSum(1, 2)); //3
js作用域
- 全局作用域:所有代码执行的环境(整个script标签内部)或者整个js文件;
- 局部(函数)作用域:作用于函数内部;
- 块级作用域:在if、for等循环语句中用其它语言创建的变量,仅在本语句中起作用(es6之前js没有块级作用域)
变量的作用域
- 全局变量:全局作用域下用var声明的变量(函数外部定义的变量);浏览器关闭时才会被销毁;
- 局部变量:局部作用域下声明的变量(函数内部);函数的形参也是一种局部变量;代码被执行后就会被销毁;
作用域链
如果函数中还有函数,那么在作用域中又可以诞生一个作用域,内部函数可以访问外部函数的变量,用链式查找就可以决定哪些数据能被内部函数访问,这就是作用域链;
js预解析
变量提升:把所有的变量声明提升到当前作用域最前面 不提升赋值操作
console.log(num);
var num = 10; // undefined
相当于执行了以下代码
var num;
console.log(num);
num = 10;
函数提升:所有的函数声明提升到当前作用域的最前面 不调用函数 只对命名函数有效
fun();
var fun = function() {
console.log(22); } // 报错
相当于执行以下代码:
var fun;
fun();
fun = function() { //函数被当成赋值操作,不被提升
console.log(22);
}