arguments 是所有函数都有的一个内置对象,里面存储了所有用户传递过来的实参,当不知道用户传递几个实参的时候可以使用,当使用arguments时就不用写形参了。
利用函数翻转任意数组 reverse
function reverse(arr){
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--){
newArr[newArr.length] = arr[i];
}
return newArr;
}
var arr1 = reverse([1, 3, 4 , 6, 9]);
console.log(arr1);
利用函数冒泡排序
<script>
function sort(arr){
for(var i = 0; i <= arr.length -1; i++){ //趟数
for(var j = 0; j <= arr.length - i -1; j++){ //次数
if(arr[j] > arr[j + 1]){
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr1 = sort([5, 2, 4, 1, 3]);
console.log(arr1);
</script>
全局作用域、局部作用域、全局变量、局部变量。
在函数内部 没有声明直接赋值的变量 是全局变量。
函数的形参,可以看做是局部变量。
*全局变量在浏览器关闭时销毁,比较占内存资源。
*局部变量在程序执行完毕销毁,比较节约内存资源。
1.js引擎运行js分为两步: 预解析 代码执行
(1)预解析 js 引擎会把里面的所有var 还有function 提升到当前作用域的最前面。
(2)代码执行 按照代码书写的顺序从上往下执行。
变量:单独声明赋值,单独存在
属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征
函数:单独存在的,通过“函数名()”的方式就可以调用
方法:对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方式就可以调用,方法用来描述该对象
的行为和功能。
对象创建的三种方法
1.利用对象字面量创建对象
var obj = {
uname:'张三丰',
age: 18,
sayHi: function(){ //对象的方法
console.log('good');
}
}
(1)调用对象属性 采取 对象名.属性名
console.log(obj.uname);
(2)调用属性还有一种方法 对象名[‘属性名’]
console.log(obj['age']);
(3)调用对象的方法 sayHi 对象名.方法名()
obj.sayHi();
2.利用new Object创建
var obj = new Object();
obj.age = 18;
3.利用构造函数创建对象
function Star(uname, age, sex) {
this.name = uname ;
this.age = age;
this.sex = sex;
this.kisi = function(){
console.log();
}
}
var 1dh = new Star('刘德华', 18, '男'); //调用函数返回的是一个对象
console.log(1dh.name);
1dh.kisi('冰雨');
var zxy = new Star('张学友', 19, '男');
console.log(zxy.name);
//1.构造函数名字首字母要大写
//2.构造函数不需要return 就可以返回结果
//3.调用构造函数 必须使用new
遍历对象 使用for…in…
var obj = {
uname:'张三丰',
age: 18,
}
for (var k in obj){ // k 或者 key
console.log(k);//k变量 输出 得到的是 属性名
console.log(obj[k]);//obj[k] 得到的是 属性值
}