JavaScript高级程序设计-基本概念

语法

1, 借鉴C语言Java 和Perl的语法

2,区分大小写

3, 标识符:指变量、函数、属性的名字。或者函数的参数。

  • 第一个字符必须是一个字母、下划线_ 或者一个美元$
  • 其他字符可以是字母下划线美元符号或数字
  • 采用驼峰大小写格式 :myCar , firstName

4,注释 : 使用C风格注释,包括单行注释和块级注释

    // 单行注释    

    / **

    * 这是一个多行

    */

5,严格模式

EXMAScript 5 引入了严格模式的概念,是定义了一种不同的解析与执行模型。

在严格模式下,ECMAScript 3中的一些不确定行为将得到 处理。而且对某些不安全的操作也会抛出错误:启用严格模式,顶部添加

“use script” 一个编译指示,为了不破坏ES3语法特意选定的语法

函数中启用严格模式:

function a() {

   "use script"
}

支持严格模式的浏览器:IE10+,Firefox+、Safari5.1+、Opera12+、Chrome

6,语句

语句由一个分毫结尾,建议在任何时候都不要省略它:

  代码行结尾没有分号会导致压缩错误;增进代码性能,解析器不必花时间推测应该在哪里插入分号了

变量

ECMAScript 的变量是松散类型的,可以保存任何类型的数据:var 操作符定义的变量将称为定义该变量的作用域中的局部变量

数据类型: 基本类型-String Number Boolean Symbol Undefined Null

引用类型:Object, Function Array RegExp Date 。。。

 

typeof操作符

typeof操作符可能返回下列某哥字符串:

“undefined”,"boolean","string",“number”,“object”,“function”

  • 对于基本类型,除null以外,均可以返回正确的结果
  • 对于引用类型,除function以外,一律返回object类型
  • 对于null,返回object类型

instanceof 只能用来判断两个对象是否属于示例关系,而不能判断一个对象示例具体哪种类型

toString():是Object 的原型方法,对于Object对象直接调用toString就返回【object Object】,对于其他对象,则需要通过call/apply来调用才能正确的返回类型信息

[object Number] ,[object Boolean] ,[object Symbol]  ,[object Undefined] ,[object Null] ,[object Function] ,

[object Date] , [object Array] ,[object RegExp] ,[object Error] ,[object HTMLDocument] ,[object global] 

 

Null 类型: 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,这样只要直接检查null值即可。

Number类型(IEEE格式):  八进制表示   010 ,如字面值大于0-7 则表示十进制, 十六进制:0x ,后面跟0-9,A-F大小写均可

八进制和十六进制在计算的时候都会被转为十进制

  • 浮点 不要测试某个特定的浮点值,最高精确小数点后17位
  • 数值范围: 最小数值保存在Number.MIN_VALUE   (5e-324),  最大值保存在Number.MAX_VALUE
  • 超出范围表示 正负无穷 判断数值是不是有穷的 可以使用isFinite()

NaN : 即非数值,表示一个本来要返回数值的操作数未返回数值的情况。 任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等

isNaN() 函数:任何不能被转换为数值的值都会导致这个函数返回true;

数值转换:

Number():可以用于任何类型

parseInt(),parseFloat(): 专门用于将字符串转换成数值 : 如果第一个字符不是数字字符或者负号返回NaN

 

String类型:

String类型包含一些特殊的字符字面量,也叫转义序列

字符串的特点:ECMAScript中的字符串是不可变的。

转换为字符串:使用toString()方法 ,null 和 undefined 没有此方法, 在不明确转换数值类型时可以是使用String()转换。

数值转换字符串可以在toString(2)传入参数,表示转换后的进制数。

Object 类型:每个实例都有一下属性和方法

constrctor: 保存这用于构建当前对象的函数;

hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例汇总是否存在

isPrototypeof(object):检查对象是不是当前对象的原型

propertyIsEnmuerable::用于检查给定的属性是否能否使用for-in语句来枚举

valueof: 返回对象的字符串/数值/或布尔值表示。

 

操作符

valueof: 返回对象的字符串/数值/或布尔值表示。

一元操作符  (++,--)

在应用于一个包含有效数字字符的字符串时,先将其转换为数值

在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN ,字符串变量变成数字变量

在应用于布尔值flase时,先将其转换为0再执行加减1的操作,布尔值变量变成数值变量

在应用于布尔值true时,先将其转换为1再执行加减1的操作

在应用于浮点数值时,执行加减1的操作

在应用于对象时,先调用对象的valueof()方法,以取得一个可供操作的值,如果结果时NaN,则在调用toString()方法,对象变量变成数值变量。

 

位操作符

按内存中表示数值的位来操作数值 (不直接操作64位的值,先转换为32位,最后再转换会64位)

32位前31位表示整数值,第32位表示数值负号,0表示正数,1表示负数 符号位

二进制码存储:

附属使用的格式是二进制补码:

1 求这个数值绝对值的二进制码

2 求二进制反码,即将0替换为1,1替换为0

3 得到的二进制反码加1

 

1. 按位非:执行按位非的结果就是返回数值的反码,本质是操作数的负数减1,按位非速度会更快;

2. 按位与:由一个和号字符(&)表示,只在两个数值的对应位都是1时,才返回1,任何一位是0,结果都是0;

3. 按位或:由一个竖线符号(|),在有一个位是1的情况下返回1,只有在两个位都是0的情况下才返回0;

 

posted @ 2019-08-29 14:53  小贤~  阅读(130)  评论(0)    收藏  举报