JS 数据类型

String

var str = 'string'/"string"/`string`

  • 字符串由一对单引号或者双引号包裹字符,用重音符也可以。默认字符串是一行的,分行会出错。
  • 字符串中的每个字符合起来是一个整体。
  • 字符串也有类似数组的下标,但是无法通过下标修改对应值
var s = 'hello';

delete s[0];
s // "hello"

s[1] = 'a';
s // "hello"

s[5] = '!';
s // "hello"
  • 字符串的length属性表示字符串的长度,同样也是不可修改的
    var s = 'hello';
    s.length // 5
    
    s.length = 3;
    s.length // 5
    
    s.length = 7;
    s.length // 5
    

      

 

Number(64位浮点数)

写法

  • 整数写法:1
  • 小数写法:0.1
  • 科学计数法:1.23e4
  • 八进制写法(用得少):0123或者00123或者0o123
  • 十六进制写法:0b11或者0B11

特殊值

  • 正0和负0:都为0,要严谨
  • 无穷大:Infinity、+Infinity、-Infinity
  • 无法表示的数字(一个无法确定的数字):NaN(not a number)但他的确是数字,

Boolean

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

下列运算符会返回布尔值:

  • 前置逻辑运算符: ! (Not)
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""''(空字符串)

Symbol

ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefinednull、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。

Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

Undefined

undefined表示“未定义”,下面是返回undefined的典型场景。

// 变量声明了,但没有赋值
var i;
i // undefined

// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) {
  return x;
}
f() // undefined

// 对象没有赋值的属性
var  o = new Object();
o.p // undefined

// 函数没有返回值时,默认返回 undefined
function f() {}
f() // undefined

 undefined和null太过接近,设计者

Null

1995年 JavaScript 诞生时,最初像 Java 一样,只设置了null表示"无"。根据 C 语言的传统,null可以自动转为0

Number(null) // 0
5 + null // 5

上面代码中,null转为数字时,自动变成0。

但是,JavaScript 的设计者 Brendan Eich,觉得这样做还不够。首先,第一版的 JavaScript 里面,null就像在 Java 里一样,被当成一个对象,Brendan Eich 觉得表示“无”的值最好不是对象。其次,那时的 JavaScript 不包括错误处理机制,Brendan Eich 觉得,如果null自动转为0,很不容易发现错误。

因此,他又设计了一个undefined。区别是这样的:null是一个表示“空”的对象,转为数值时为0undefined是一个表示"此处无定义"的原始值,转为数值时为NaN

null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。

 

Object

var obj = {'name':'Object'}

  • 对象的key一定是字符串
  • 读取属性: obj.name或者obj['name'](['里面写表达式或者变量'])
  • 属性赋值: obj.name = "hello"或者 obj['name']="hello"
  • 属性查看: Object.keys(obj)
  • 属性删除: delete obj.name
  • 属性是否存在: in 运算符但同时也会返回继承的值,obj.hasOwnProperty('toString')只能确定自身拥有的值
  • 属性遍历: for...in循环
posted @ 2020-12-11 20:55  时间观测者  阅读(50)  评论(0编辑  收藏  举报