JavaScript 学习笔记 p51 - 60

~ 函数 function 也是一个对象,函数可以封装一些功能(代码),在需要时可以执行这些功能(代码)。函数中可以保存一些代码在需要的时候调用。

~ 创建一个函数对象。可以将要封装的代码以字符串的形式传递给构造函数: var fun = new Function ("console.log('Hello');");。该代码在函数调用时执行。调用函数 语法:函数对象()。

~ 使用函数声明来创建一个函数。语法: function 函数名([形参1,形参2.。。形参n.....] ) { 语句。。。 }

~ 使用函数表达式来创建一个函数: var 函数名 = function ( ) { }

~ 可以在函数的( )来指定一个或多个形式参数(形参),多个形参用逗号隔开,声明形参就相当于在函数内部盛行了对应的变量。 function sum (a, b) {console.log (a+b);} 。在调用函数时,可以在( )中指定实参(实际参数),实参将会赋值给函数中对应的形参。sum (1, 2); 。

~ 调用函数时解析器不会检查实参的类型和数量。所以要注意是否有可能会接受到非法的参数,有可能需要进行检查。多余的实参不会被赋值。如果实参的数量小于形参的数量,则没有对应实参的形参将是 undefined 。

~ 使用 return 来设置函数的返回值。return 的值将会作为函数的执行结果返回。定义一个变量来接收该结果。

例:function sum (a, b, c) { var d = a + b + c; return d; alert (a + b + c)} var result = sum (4, 7, 8); console.log ("result = "+result);。在函数里,return 后的语句不执行。returen 后面不跟任何值或不写 return,相当于返回 undefined。

~ 创建一个函数,可以在控制台中输出一个人的信息:function sayHello (name, age, gender, address) { console.log ("我是"+name+",今年"+age+"岁,性别"+gender",住在"+address);}

或者:function sayHello (obj) {console.log ("我是"+o.name+",今年"+o.age+"岁,性别"+o.gender+",住在"+o.address);} var obj = {name: “孙悟空”, age:18, gender:"男", address:"花果山"}; 。

~ 实参可以是一个对象,也可以是一个函数。

function fun(a) { console.log("a = "+a);} fun(sayHello);  

function fun3 () {
    function fun4 () {
        alert ("我是fun4");
    }
    return fun4;
}
a = fun3 ();
a ();

结果:弹出 我是fun4 。

~ 用括号标识匿名函数是一个整体。 (function () {alert ("我是一个匿名函数~~");}) ();

立即执行函数:函数定义完,立即被执行。往往只会执行一次。

~ 对象的属性值也可以是函数。

~ 函数也可以成为对象的属性。如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法。调用函数则是调用对对象的方法。obj.sayName = fun ( ) { }

var obj2 = {
        name:"猪八戒",
        age: 18,
        sayName:function () {
            console.log (obj2.name);
        }
    }
    obj2.sayName ();

打印 “猪八戒”。

~ 枚举属性:使用 for 。。in 语句。语法: for (var 变量 in 对象) {}。有几个属性,循环几次。每次执行时,会将对象中的属性名字赋值给变量。

for (var n in obj) {
        console.log (obj[n]);
    }

~ [ ] 可以传变量。

~ 作用域:指一个变量作用的范围。在 JS 中有两种,全局作用域、函数作用域。

全局作用域:直接编写在script标签中的 JS 代码,都在全局作用域。页面打开时创建,页面关闭时销毁。在全局作用域中有一个全局对象 window ,它代表一个浏览器的窗口,由浏览器创建,我们可以直接使用。在全局作用域中,创建的变量都会作为  window 对象的属性保存。创建的函数都会作为 window 对象的方法保存。

全局作用域中的变量都是全局变量。在页面的任意部分都可以访问到。

function fun () {
   var a = 123;
}
fun ();
console.log (a);

返回:a is not defined 。

~ 变量的声明提前:使用 var 关键字声明的变量,会在所有的代码执行之前被声明。但是不会赋值。

~ 函数的声明提前: 使用函数声明形式创建的 function 函数 ( ) { }。会在所有的代码执行之前就被创建 function fun () {}。可以在函数声明前来调用函数。使用函数表达式声明的函数 var function = fun (),不会被提前声明,所以不能提前调用。

~ 函数作用域:调用函数时创建函数作用域,函数执行完毕后,函数作用域被销毁。每调用一次,创建一个新的函数作用域。当在函数作用域中操作一个变量时,先在函数作用域中寻找。如果有就直接使用,没有则向上一级作用域中寻找(上一级也可能是函数作用域)。 

~ 在函数中要访问全局变量,可以使用 window 对象。

~ 在函数作用域中也有声明提前的特性。使用 var 关键字声明的变量,会在函数中所有的代码执行之前被声明,但不赋值。使用函数声明也可在执行之前。

~ 在函数中,不使用 var 声明的变量都会成为全局变量。

~ 定义形参就相当于在函数作用域中声明了变量:

var e = 23;
    function fun6 (e) {
        alert (e);
    }
    fun6 ( );

弹出 undefined 。

~ 函数作用域中变量的改变不会影响全局作用域中的变量

var a = 123;
    function fun () {
        alert (a);
        a = 456;
    }
    fun ( );
    alert (a);

弹出 123;456 。

var a = 123;
    function fun (a) {
        alert (a);
        a = 456;
    }
    fun ( );
    alert (a);

弹出 undefined;123 。

~ debug 。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值