JavaScript-类型、值和变量

红太狼 2021-09-09 09:04 538阅读 0赞

数字

和其他编程语言不同,JavaScript不区分整数值和浮点数值。JavaScript中的所有数字均用浮点数值表示。

整型直接量

在JavaScript程序中,用一个数字序列表示一个十进制整数

  1. var a = 0
  2. var b = 10
  3. var c = 3

除了十进制的整型直接量,JavaScript同样能识别十六进制(以16为基数)值。

  1. var a = Oxff //15*16+15=255(十进制)
  2. var b = OxCAF

浮点型直接量

  1. var a = 3.14
  2. var b = 6.02e23
  3. var c = 1.4738223E-32

JavaScript中的算术运算

JavaScript程序是使用语言本身提供的算术运算符来进行数字运算的。
这些运算符包括
加法运算符(+)、减法运算符(-)、乘法运算符(*)、
除法运算符(/)和求余(求整除后的余数)运算符(%)。

日期和时间

JavaScript语言核心包括Date()构造函数,用来创建表示日期和时间的对象。这些日期对象的方法为日期计算提供了简单的API。

  1. var then = new Date(2021,0,1); //2021年1月1日
  2. var later = new Date(2001,0,1,17,10,30); //2021年1月1日15点10分30秒
  3. var now = new Date(); //当前日期和时间
  4. later.getFullYear() //获取年
  5. later.getMonth() //获取月
  6. later.getDate() //获取天
  7. later.getDay() //获取星期

文本

JavaScript通过字符串类型来表示文本。字符串的长度(length)是其所含16位值的个数。JavaScript字符串(和其数组)的索引从零开始:第一个字符的位置是0,第二个字符的位置是1,以此类推。空字符串(empty string)长度为0,JavaScript中并没有表示单个字符的“字符型”。

字符串直接量

  1. var a = "ths"
  2. var b = "3.26"
  3. var c = "asdfghjkl"

转义字符

在JavaScript字符串中,反斜线()有着特殊的用途,反斜线符号后加一个字符,就不再表示它们的字面含义了,比如,\n就是一个转义字符(escape sequence)[插图],它表示的是一个换行符。
在这里插入图片描述

字符串的使用

字符串连接

  1. m="abc"+"efg"

获取字符串的长度

  1. m.length

模式匹配

JavaScript定义了RegExp()构造函数,用来创建表示文本匹配模式的对象。这些模式称为“正则表达式”(regularexpression),JavaScript采用Perl中的正则表达式语法。String和RegExp对象均定义了利用正则表达式进行模式匹配和查找与替换的函数。

布尔值

布尔值指代真或假、开或关、是或否。这个类型只有两个值,保留字true和false。

比较语句的结果通常都是布尔值

任意JavaScript的值都可以转换为布尔值。下面这些值会被转换成false:

  1. undefined
  2. null
  3. 0
  4. -0
  5. NaN
  6. "" //空字符串

null和undefined

null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。

如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。

  1. 尽管nullundefined是不同的,
  2. 但它们都表示“值的空缺”,两者往往可以互换。
  3. 判断相等运算符“==”认为两者是相等的(要使用严格相等运算符“===”来区分它们)。

全局对象

全局对象(global object)在JavaScript中有着重要的用途:全局对象的属性是全局定义的符号,JavaScript程序可以直接使用。

·全局属性,比如undefined、Infinity和NaN

·全局函数,比如isNaN()、parseInt()(见3.8.2节)和eval()

·构造函数,比如Date()、RegExp()、String()、Object()和Array()

·全局对象,比如Math和JSON

包装对象

JavaScript对象是一种复合值:它是属性或已命名值的集合。通过“.”符号来引用属性值。当属性值是一个函数的时候,称其为方法。

存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值和字符串对象、数字和数值对象以及布尔值和布尔对象。

类型转换

  1. 10+"abc" //"10abc"
  2. 数字10转换成字符串
  3. "7"*"3" //21
  4. 两个字符串转换为数字
  5. var n = 1-"x'; //NaN
  6. 字符串"x"无法转换为数字
  7. n+"abc" //"NaNabc"
  8. n转换为字符串"NaN"

在这里插入图片描述

转换和相等性

由于JavaScript可以做灵活的类型转换,因此其“==”相等运算符也随相等的含义灵活多变。

  1. null == undefined
  2. //两值被认为相等
  3. "0" == 0
  4. //在比较之前字符串转换成数字
  5. 0 == false
  6. //在比较之前布尔值转换成数字
  7. "0" == false
  8. //在比较之前字符串和布尔值都转换成数字

显式类型转换

做显式类型转换最简单的方法就是使用Boolean()、Number()、String()或Object()函数。

  1. Number("3") //3
  2. String(false) //"false"
  3. Boolean([]) //true
  4. Object(3) //new Number(3)
  5. x+"" //等价于String(x)
  6. +x //等价于Number(x)
  7. !!x //等价于Boolean(x)

变量声明

  1. var i;
  2. var sum;
  3. var a,b; //一个var关键字来声明多个变量
  4. var m="hello"; //将变量的初始赋值和变量声明合写在一起
  5. var z=0,x=0;

变量作用域

全局变量拥有全局作用域,在JavaScript代码中的任何地方都是有定义的。然而在函数内声明的变量只在函数体内有定义。它们是局部变量,作用域是局部性的。函数参数也是局部变量,它们只在函数体内有定义。
在函数体内,局部变量的优先级高于同名的全局变量。

  1. var a="abc"; //声明一个全局变量
  2. function c(){
  3. var b="s"; //声明一个局部变量
  4. return b; //返回局部变量的值
  5. }

参考资料:《JavaScript权威指南》

发表评论

表情:
评论列表 (有 0 条评论,538人围观)

还没有评论,来说两句吧...

相关阅读