js小结:函数&变量

函数声明
// 普通函数声明
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)) // 120
console.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值