简单数据类型

1. 数字Number

1.1 整型直接量

如:30 10000 0 等 除了十进制,还可以识别十六进制,即以 0x0X 为前缀

虽然某些实现可以允许用八进制,但也有些不支持八进制直接量, 在ECMA6严格模式下,八进制直接量是明令禁止

负零和正零是相等的(除了作为除数外)

var zero=0;//正0
var negz=-0;//负0
zero===negz;//返回true
1/zero===1/negz;//返回false,正无穷大和负无穷大不相等

1.2 浮点型直接量

如:3.14 .32323 6.33e23 1.2323e-32 等,支持科学计数法

javascript采用 IEEE754浮点数表示法,这是一种二进制表示法,可以精确表示如 1/21/81/1024等分数,但我们常用的是如 1/101/100等十进制分数,二进制浮点数表示法并不能精确表示。

var x = .3 - .2;
var y = .2 - .1;
x == y;//返回false
x == .1;//返回false, 0.3-0.2不等于0.1
y == .1;//返回true,0.2-0.1等于0.1

1.3 易错点

1) 被 0 整除不会报错,会返回无穷大(Infinity)或无穷小(-Infinity
2) 0 除以 0 、无穷大除以无穷大、给负数开方、对不是数字或无法转换成数字的操作数进行算术运算,结果为 NaN
3) NaN 和任何值都不相等,包括自身,没有办法通过 x==NaN来判断,一般通过 x!=x(有且仅有x为 NaN时表达式结果为 true)或函数 isNaN()来判断

isNan() 参数为 NaN或字符串或对象时返回 true
isFinite() 参数 不是 NaNInfinity-Infinity时返回 true

2. 字符串String

2.1 字符串直接量

如:"" "test" "2.3" "name='tom'" 'name="jack"' 等, 单双引号都可表示字符串,要成对出现,使用单引号来定界字符串时要小心英文中的缩写 's,可以使用转义符 \进行转义
字符串可以分行写,但是要在末尾加上 \,如:

"one\
long\
line"

或者用反单引号 `

`one
long
line`

2.2 字符串的使用

常用 +进行字符串连接

字符串常用属性及方法:

var s="hello,world";
s.length;//字符串的长度
s.charAt(0);//"h":字符串中下标为0的字符
s[0];//同上
s.substring(1,4);//"ell":字符串中下标为1~4的字符(不包括4)
s.slice(1,4);//"ell":同上
s.slice(-3);//"rld":最后三个字符
s.indexOf("l");//2:字符l首次出现位置
s.indexOf("l",3);//3:在位置3及之后字符l首次出现位置
s.lastIndexOf("l");//10:字符l最后一次出现位置
s.split(",");//以 , 为分隔符,将原字符串分割成几个字符串
s.replace("h","H");//全文替换
s.toUpperCase();//全部大写

字符串是固定不变的,类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身没有改变

3. 布尔Bool

任何javascript的值都可以转换成布尔值。下面这些值会被转换成 false

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

4. 空Null

null是一个特殊的对象值,含义是“非对象”,对 null执行 typeof 运算,结果返回字符串 "object",通常认为是它自有类型的唯一一个成员

5. 未定义Undefined

undefined是预定义的全局变量(null是关键字,它不是)它的值就是“未定义”,对 undefined 执行 typeof 运算,结果返回 “undefined" ,表明这个值是该类型的唯一成员

null == undefined 返回 true

null === undefined 返回 false

6. Symbol

Symbol类型是ES6中新加入的一种基本类型,它由全局 Symbol() 函数创建,每次调用 Symbol()函数,都会返回一个唯一的 Symbol

let symbol1 = Symbol();
let symbol2 = Symbol();
 
console.log( symbol1 === symbol2 ); //输出 false

Symbol函数前不能使用new命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。

Symbol 是 JavaScript 中的新原始类型

console.log( typeof symbol1 );//输出 symbol

复杂数据类型

(待写区域)

知识杂集

1. 字符集

javascript程序是用 Unicode字符集编写,UnicodeASCIILatin-1的超集,几乎包含地球所有在用语言。

2. 大小写

javascript区分大小写

HTML不区分大小写,XHTML区分大小写

3. 常见格式控制符

Unicode转义字符名称
\u0008\b退格符
\u0009\t水平制表符
\u000A\n换行符
\u000B\v垂直制表符
\u000C\f换页符
\u000D\r回车符
\u0022\"双引号
\u0027\'单引号
\u005C\\反斜线
\u0020.普通空格符
\u2028.行分隔符
\u2029.段分割符
\u00A0.不中断空白
\uFEFF.字节序标记

4. 直接量

指程序中直接使用的数据值,如:
12 //数字
1.2 //数字
"hello word" //字符串
true //布尔值
null //空

5. 标识符

标识符必须以字母、下划线、或美元符 开头 ,后面的字符可以是字母、数字、下划线或美元符

(注意标识符和保留字的关系)

1.标识符不能以 数字 开头
2.后面跟的字符可以是Unicode字符全集中的字母和数字(如非英语语言或数学符号也是可以的),但不建议这么做

6.省略的分号

语句末尾部分地方可以省略分号 ;,但不建议这么做
如:

'use strict';
function max(a, b) {
    if (a > b) {
        return
                a;
    } 
    else {
        return
                b;
    }
}
console.log(max(15, 20));

无论传入什么数,max()函数总是返回undefined
这是因为在 return 语句后面会自动加上分号,变成了 return ;而不是 return a;

Last modification:September 11th, 2020 at 02:44 pm
如果觉得我的文章对你有用,请我喝杯奶茶吧