《javascript高级程序设计》读书笔记-基本概念

基本数据类型:
Undefined 、Null 、Boolean、Number、和String


var 关键字 定义变量,省略var 则该变量变为全局变量
声明多个变量时,可用逗号分行隔开

typeof操作符 判断  类型
例: typeof 98;//number

Boolean 类型
String 类型非空字符串为true 
Number类型  任何非零数字值为true
Object 任何对象为true


Number 类型
浮点数最高精度17位小数
不要用浮点数作为判断根据,因为存在误差。
NaN(Not a Number)
ECMAScript 中任何数字除以 0 都返回NaN。
任何涉及NaN的操作返回都是NaN,
而NaN 和 NaN比较也不相等。
isNaN( n ) 接受参数 判断是否是非数字,首先会尝试将非Number类型转换为Number 类型
Number();
parseInt();
parseFloat();

String 类型 
转义符 \
ECMAScript 字符串的不可变性。
字符串一旦创建,他们的值都是不可变的。
字符串拼接操作时
var lang = "Java';
lang = lang + "script";
首先创建一个新的字符串,在放入Java和script ,最后销毁原来的字符串。

Object 类型
类似Java 是 所有对象的基类。
包含的属性和方法
Constructor
hasOwnProperty("propertyName"): 用于检查给定的属性     在当前对象实例中(而不是实例的原型中)是否存在。
isPrototypeOf(object): 用于检查传入的对象是否是另一个对象的原型。
propertyIsEnumerable(propertyName)用于价差给定的属性能否使用for-in 语句来枚举。
tolocaleString()
toString()
valueOf();


操作符

位操作符

+运算符
如果一个操作数是字符串,则将另一个操作数转换为字符串,然后将两个字符串拼接。

-运算符
与+运算符相反,会把字符串、布尔值、null、undefined在后台通过调用Number()函数将其转换为数值。如果转换的结果是NaN,则结果是NaN。
如果一个操作数是对象,则调用对象的valueOf()方法取得表示对象的该值如果对象没有valueOf()方法,则调用toString()方法转换为字符串,再通过Number()转换。


关系运算符
如果两个操作数都是字符串时,比较的是两个字符串对应的字符编码

比较字符串时,比较的是”ACSCII“顺序,比如”B” < "a","23"< "3"都是true;


字符与数字比较时, "a"< 3;  //false 因为"a” 被转换为NaN了。
如果一个操作数是对象,则调用这个对象的valueOf()方法。如果没有valueOf()方法,则调用toString()方法。


相等运算符

== 类型转换,向下转换。 

如果一个操作数是布尔值,则比较相等之前,先转换为数值,false转为0 true 转为1. 

如果是字符串与数值  判断相等, 则现将字符串转为数值。
如果是操作数是对象,另一个不是,则调用对象的valueOf()方法,用基本类型比较。

null 和undefinded是相等的。
如果有一个操作数为NaN,因为NaN不等于任何数,所以返回false.

如果两个操作数都是对象。则比较他们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true。

=== 不做类型转换(避免隐式转换,推荐使用===)
例:
 var result = ("55" != 55); //false
var result2 = ("55" !== 55); //true

switch 语句
case 后可以用任何数据类型。
switch 比较时使用的是全等===操作符,因此不会发生类型转换。

for循环等循环
javascript 没有块级作用域
因此for循环等循环内部定义的变量可以在外部访问到。

for in  
用来枚举对象的属性,因为对象存储属性是无序的,所以循环也是无序的。
使用之前应先检测该对象的值不是Null或undefined。



函数 

return; --》返回undefined

理解参数

ECMAScript函数不介意传递进来几个参数,也不在乎传进来的参数是什么数据类型,也就是说,原本接受两个参数的函数,你可以传递0个或多个参数。
因为:EMCAScript中的参数在内部使用一个数组来表示的。函数接收到的始终是数组。而不关心数组中包含哪些参数。

在函数体内可以通过arguments对象来访问这个参数数组。例如:arguments[0],
arguments.length.

ECMAScript中所有参数传递的都是值,不可能通过引用传递参数。


函数没有重载

后声明的函数会覆盖掉前面的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值