js对象简单介绍

Mar 31, 2017


数组的定义

字面量定义

var arr = [1,2,3];

对象定义(数组的构造函数)

var arr = new Array(参数); 参数位置一个数值时为数组长度,多个数值时为数组中的元素。

//定义1(字面量定义)
var array1 = [1,2,3];
var array2 = [];
console.log(typeof array1);//object
console.log(array1);//[1,2,3]
//定义2(对象创建)
var arr1 = new Array(); //空数组
var arr2 = new Array("aa","bb","cc");
var arr3 = new Array(1,2,3);
var arr3 = new Array(3);
console.log(arr1);//[]
console.log(arr2);//["aa", "bb", "cc"]
console.log(arr3);//[]  length=3

案例:

  1. 求一组数中的所有数的和和平均值
  2. 求一组数中的最大值和最小值,以及所在位置
  3. 将字符串数组用 或其他符号分割
  4. 将数组中值为0的去掉,不为0的存入一个新数组
  5. 翻转数组
  6. 数组去重后,冒泡排序,从小到大

函数

函数是可以重复执行的代码块。

关键字function。

function 函数名 () { 程序 }

参数(形参、实参)

注意:参数相当于局部变量

参与运算的变量。 设置参数是为了增强函数的功能性,和程序员的交互性,和函数的可拓展行。所以我们增加了参数这个概念。

关于形参个数与实参个数:

  • 相等的话,正常执行。
  • 实参大于形参,正常执行。(多余的实参,函数不使用)
  • 实参小于形参,要看你的程序是否报错。(报错,NaN,undefined),未给定实参的形参为undefined;

返回值

有return函数就有值;没有return函数就没值; 函数程序运行后的结果外部需要使用的时候,我们不能直接给与,需要通过return返回。 总结:函数内部,return后面的值就是返回值; 作用:函数执行后剩下结果就是返回值。 函数执行完毕,会不会留下点儿什么,取决于有没有返回值

注意

  • 如果函数没有显式的使用 return语句 ,那么函数有默认的返回值:undefined
  • 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
  • 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值 也是:undefined
  • 函数使用return语句后,这个函数会在执行完 return语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。

函数名、函数体和函数加载问题

函数名 == 整个函数。 function fn(){alert(1)}; console.log(fn) == console.log(function fn(){alert(1)});

函数加载问题 JS加载的时候,只加载函数名,不加载函数体。所以如果想使用内部的成员变量,需要调用函数。

函数定义

第一种定义方法最强大,定义完毕后,在哪里使用都可以,无位置限制。 后两种定义方法是有局限性的。(使用函数必须在定义函数之后)。

第一种:函数声明(自定义声明) function fn1(){ console.log(“我是第一种定义方法!”); }

第二种:函数表达式(函数名可有可无,不写函数名,为匿名函数) var fn2 = function (){ console.log(“我是第二种定义方法!”); }

第三种: var fn3 = new Function(“console.log(‘我是第三种定义方法!’)”);

变量和作用域(隐式全局变量和变量声明提升)

变量和作用域(函数中的变量需要函数执行后才能使用)

全局变量(成员变量):哪里都可以访问到的变量(进入script立即定义的变量和函数内部不带有var的变量)永久性存在 。 局部变量:函数内部的变量,只有函数内部可以访问到(函数内部用var定义的变量和形参),函数执行完毕后,局部变量被释放,内存回收。

隐式全局变量

隐式全局变量就是隐藏的全局变量不好被发现。

注意: function fn(){ var a = b = c = 1; // b和c就是隐式全局变量(等号) var a = 1; b = 2; c = 3; // b和c就是隐式全局变量(分号) var a = 1 , b = 2 , c = 3; // b和c就 不是 隐式全局变量(逗号) }

匿名函数

匿名函数就是没有名字的函数。

作用:不需要定义函数名的时候,书写起来更简洁。

匿名函数的调用有三种方法: 1.直接调用或自调用。(function(){alert(1)})() 2.事件绑定。 3.定时器。

函数是一种类型

函数作为参数

递归

变量声明提升(预解析)

定义变量在使用变量之后时:只提升变量名,不提升变量值,容易出现undefined。计算后形成NaN。

变量声明提升:在预解析的时候,成员变量和函数,被提升到最高位置,方便其他程序访问。 变量声明提升特点:成员变量只提升变量名,不提升变量值。但是,函数是所有内容全部提升。(function直接定义的) 函数范围内照样会出现变量声明提升 什么情况容易出现变量声明提升:使用变量在定义变量之前。

对象

数组常用方法

伪数组和argument