js高级程序设计(第三版)第三章 基本概念

变量

初始化变量的时候并不会标记该变量的类型,初始化的过程就是仅仅给变量附一个值,因此可以在修改变量值的同时修改值的类型。
例如:

    var msg = 'amy';
    msg = 719; //有效但不推荐

用var操作符定义的变量将成为定义该变量的作用域中的局部变量。当它退出该作用域的时候,其被销毁。

在不使用var的时候声明变量相当于全局变量,但是不推荐这样做,比较难维护,在严格模式下,不用var 或者 let const 声明的话,会抛出ReferenceError错误。

数据类型

五种简单类型【Undefined, Null, Boolean, String, Number】+一种复杂类型【Object】

所有值最终都是属于这六种类型中的某一个。

Undefine未定义或者未初始化,都会是undefine,但未定义,使用会报错。

Null 被看做是obj的一个空指针,一个特点是 typeof Null 结果为object

Object的每个实例都会有以下属性和方法:

    constructor(): 用于保存创建该对象(实例)的方法
    hasOwnProperty(name): 判断给定的属性是否存在于当前对象中,参数为字符串。
    isPrototypeOf(obj): 用于检查传入的对象是否是当前实例的原型。
    propertyIsEnumerable(name): 给定的属性是否能使用 for-in语句来枚举。参数为字符串
    toLoacaleString(): 返回对象的字符串表示。
    toString()
    ValueOf(): 和toString 一样  null和undefine没有toString方法,但可以用ValueOf();

将一个function调用String方法时,会先去调用它的toString()方法,如果toString方法不存在,则去调用ValueOf()方法。

可以向ECMAScript函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数,甚至改变,但是在严格模式下,arguments是不能改变参数的, 能改变的原因只是因为,值的同步,并不是因为指向同一块内存区域。

由于不存在函数签名的特性(任意传递参数),所有函数是没有重载的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值