js小结:函数&变量

来源:互联网 发布:阿里妈妈解绑淘宝账号 编辑:程序博客网 时间:2024/06/06 14:07

函数声明

// 普通函数声明function f(){    //}// 通过变量初始化var f = function(){    //}// 构造函数初始化函数(请忘记它吧)var t = new Function('x', 'y', 'alert(x+y)')

传递函数

function sum(a, b){ return a+b; }function sub(a, b){ return a-b; }function box(a, b, fun){ return fun(a, b); }console.log(box(1, 2, sum))console.log(box(1, 2, sub))

函数的属性(函数是对象)

  • length:函数接受参数的个数
  • prototype:函数原型
function f(a, b){ }console.log(f.length); // 2

函数内部属性

  • arguments: 对象,用来保存参数。此对象拥有一个名叫callee的属性,这属性是一个指针,指向函数本身。
  • this: 指向函数所属的对象,全局函数的this是window

用法

// 阶乘function jie1(num){ if(num <= 1) return 1; else return num * jie1(num-1); }function jie2(num){ if(num <= 1) return 1; else return num * arguments.callee(num-1); }console.log(jie1(5)) // 120console.log(jie2(5)) // 120// 如果在函数内部有着很多的自身调用,如果想改变改变函数名...

window对象(全局this)

最外围对象,所有的js对象都在其下面

// 全局变量,自动挂载到window对象上,成为其一个属性var color = 'red';console.log(window.color)console.log(window); // 在控制台打印出来的window对象中可以找到color属性//全局函数,自动挂载到window对象上var f = function(){ //... }// 全局this全局的this就是window对象的指针,和使用window一样比如:    this.color;    this.f();    console.log(this);    console.log(this === window); // true 说明this就是window

变量

变量分类
  • 基本类型(保存在栈内存)

    • Number
    • Boolean
    • String
  • 引用类型(保存在堆内存)

    • Object
  • 特殊类型

    • null
    • undefined
变量访问
  • 值访问
  • 引用访问

参数传递

虽然变量分为基本类型和引用类型,但是参数的传递均是按值传递。(困惑?)

// 比较困惑的应该是传递对象吧// 传递的参数的类型可分为:基本类型,引用// 这里所说的均是按值传递(传递基本类型时不解释),// 当传递引用时引用是按值传递的,也就是说函数参数// 的那个引用和外部的引用已经没有任何联系了,在函数// 内部改变引用不会对外部引用造成影响,但是,形参的// 引用与外部引用指向同一个对象。java也是这样。还有// 一点就是我感觉自己好啰嗦。function changeName(m){ var p = {name:'Peter'}; m = p; }changeName(man);console.log(man.name); // Tom

类型检测

  • typeof
  • instanceof(当使用instanceof 检查基本类型的值时,它会返回false)

块级作用域

块级作用域? 对不起,没有

// if 语句代码块没有局部作用域if (true) { var box = 'Lee'; }alert(box);// for没有局部作用域for (var i = 0; i < 10; i ++) { var box = 'Lee'; }alert(i);alert(box);

var关键字

在函数内部,如果使用var,变量就是函数局部变量,否则就是全局变量

0 0
原创粉丝点击