读真·犀牛书有感

1.变量是一种为数据创建引用的方式。目的是可以通过变量名多次访问该数据。

  • 在函数中,如果某传入的参数被多次访问,则应该先将数据赋值给局部变量。

2.JS的数据类型分为两种:原始类型和对象类型。原始类型包括数字、字符串、布尔值、null、undefined。

  • 数组是特殊的有序对象;函数也是具有相关联可执行代码的特殊对象。

3.JS不是一种强类型语言,而是松散类型/动态类型。因此变量在不同时候可以根据不同的上下文保存不同数据类型。

  • 传入变量的参数类型不是固定的。

4.JS没有块级作用域,只有全局作用域和函数作用域。

  • 以下代码,在不同位置定义了i,j,k,他们都是在同一个作用域内。
function test(o){
    var i=0;
    if(typeof 0=="object"){
        var j=0;
        for(var k=0;k<10;k++){    //k在函数体内有定义,不仅在此循环
            console.log(k)        //输出数字0~9
        }
        console.log(k)            //k已经定义了,输出10
    }
    console.log(j)                //j已经定义了,但是可能没有初始化(变量提升)
}

5.任意JS的值都可以转换为布尔值。undefined,null,0,-0,NaN," "都会被转化成false.

  • 因此想判断是null,0," "的时候可以用if(o)...想区分三者时用if(o!==null)

6.对对象使用toString()方法,({x:1,y:2}).toString()  //=>"[Object Object]"

  • 所以console.log("data:"+data)打印结果为"data:[Obj Obj]"

7.有4种方式调用JS函数:作为函数、作为方法、作为构造函数、通过call()和apply()方法间接调用

  • 以函数形式调用的函数通常不使用this关键字
  • 方法和this关键字是面向对象编程范例的核心
  • 以方法形式调用的函数用关键字this调用上下文。方法即保存在某对象的属性里的函数,函数体使用关键字this引用该对象
  • 联想到angularjs中$scope定义函数。所以$scope首先是一个JS对象
//为js对象定义方法
o.m=function(){...}

//为$scope定义方法
$scope.m=function(){...}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值