2:
var count = function(a){ return x }
区别:
java script 中函数同参数一样,会在预编译时被提到最前面,所以:
1.采用第一种方法定义的函数,不管定义的位置在哪里,script 里任何地方都可以调用这个方法,因为实际上在执行前就已经初始化好了;
2.采用第二种方法定义的函数,会被当作变量处理,所以预编译阶段只会声明这个变量,并没有将方法赋给它。
5.2 函数的参数
与 Java 不同,java script 对函数的参数没有严格的限制,在调用函数时,不对参数做任何的检测,不给、多给、少给都可以正常调用函数,在函数执行过程中没有值的参数的值为 undefined。
方法中传入的所有参数,会存放在关键字 arguments 中以类似数组的形式保存,但又不是数组,也可以对其进行遍历。
5.3 函数的返回值
如果没有写返回值,那么函数默认会返回 undefined。
6 数组
在 java script 中,数组是可变长的,里面的内容也可以随意的替换且没有类型的限制。
6.1 创建数组
创建数组有两种方式
<script type="text/java script">
//1、字面量的方式创建数组,用[]括起元素
var arr1 = ["Apple","Banana","Cat"]
//2、new Array()创建数组,用()括起元素
var arr2 = new Array("苹果",1,"香蕉",function(){console.log(123)})
console.log(arr1)
console.log(arr2)
</script>
6.2 数组的遍历
方法一:数组带有 length 属性,用 for 循环遍历数组。
for(var i=0;i<arr1.length;i++){
console.log(arr1[i])
}
方法二:用数组的 forEach 方法遍历数组,同 Java 中的 forEach 方法需要传入一个函数式接口作为参数一样,这里的 forEach 也要提供一个函数作为参数,forEach 会按顺序将数组的元素赋给参数函数作为参数,实现遍历。
arr2.forEach(function(item){
console.log(item)
})
6.3 数组实现队列和栈
当把数组当作队列(FIFO)时,可以使用数组的 push(), shift() 方法操作数组。
- push():在数组最后添加元素
- shift():在数组的最前面取出元素
当把数组当作栈(FILO)时,可以使用数组的 push(), pop() 方法操作数组。
- push():在数组最后添加元素
- pop():在数组的最后面取出元素
6.4数组的其他方法
- unshift():在数组的第一元素前插入数据
- slice(beginIndex, endIndex):返回数组从索引 beginIndex 到 endIndex 作为元素的子数组(原数组不被修改)
- splice(index, length, element...):可以增加或者删除指定元素,从 Index 开始取出长度为 length 的元素以数组形式返回(原数组会被修改),并将 element(可以是多个参数)从 index 处插入
- concat(Array):将此数组和参数数组合并,将参数加至末尾