Skydoms

JS基础

函数:

函数定义方式:

  1. 函数声明:

function func(a,b){ return a*b; }

  1. 函数表达式:

var func = function(a,b){ return a*b; }

  1. 对象实例化(基本不用):

var func = new Function('a','b','return (a*b)');

函数定义的区别

  1. 函数声明和函数表达式,对象实例化的区别:
    前者在编译之前,会声明提前,后者则不会。
1
2
3
4
5
6
7
fun1(3,3);//9
fun2(3,3);//func2 is not defined
function func1(a,b){ return a*b };
var func2 = function(){return a*b };
  1. 对象实例化与函数声明,函数表达式的区别:
    对象实例化无法访问到函数之外的变量,后者可以。
    如:
    1
    2
    3
    4
    5
    6
    7
    8
    (function () {
    var i = 10;
    function func(j) {
    console.log(i+j);//i = 10;
    debugger;
    }
    func(1);
    })();

对象实例化定义的函数都会定义在全局作用域上

作用域

  • JS分为函数作用域和全局作用域。
  • 函数作用域可以访问全局作用域,反之不能。
  • 如果函数作用和全局作用域有相同的变量,则会使用就近原则。

参数

实参:调用函数的参数称为实参。
形参:定义函数的参数称为形参。

  • 实参少于行参:少于的形参会变成undefined;

  • 实参多于行参:多余的实参会忽略掉,且程序不会报错。