js学习day4

函数

判断类型 typeof(),函数也是一种数据的类型。
函数是可以嵌套定义的,尽量不要这么嵌套函数。

  • 三种函数的定义

    • function语句式

      • 占用内存,但是声明一次随时可以调用
      • 对于函数式的语句js会优先进行解释,调用可以在函数定义之前
        function test1(){
        alert("test1");
        }
        // test1();
    • 函数的直接变量

      • 不占用内存,调用完了即销毁了,调用一次时最好使用这样的动态的方式
      • 直接变量的这样的形式,只能放到函数定义之后调用,虽然也用test2进行声明了,但是没有进行赋值,只有当编译器执行到这个函数赋值的行数的时候才会进行赋值,把function赋值给test2
    var test2 = function() {
    alert('test2');  }
    • 构造函数式

      var test3 = new Function("a" , "b","return a + b;");
      alert(test3(10,20));
    • 在js中,先会读取function语句,然后是变量的函数定义,当存在同名的函数调用的时候,会覆盖之前的函数,js中允许同名的函数存在。

作用域

构造函数式的函数,具有一个顶级的作用域

var k = 1;
function t1(){
    var k =2;
    var test = new Function('return k;');
}
t1();        //返回的结果是1不是2

new 一个函数的时候,相当于在全局new了一个函数,找的是全局的变量。

参数

函数的实际参数,内部是用数组来接受的,arguments.length 对象可以访问函数的实际的参数。

arguments对象一般用于递归的操作:
arguments.callee指的函数本身

this对象
  • this对象是运行时基于函数的执行环境绑定的。在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。
  • this关键字指代调用者
//this总指向调用者
var k =10;
function test(){
      this.k = 20;
}
//window.test();this 浏览器全局的调用
//this.k = 20 是对全局的赋值
//所以全局的k将不是10,而是20 
test();//当调用test的时候会执行this.k = 20;
window.test(); //因为是window调用的所以呢 ,就会把20赋值给全局的变量k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值