JS 数据类型
String
var str = 'string'/"string"/`string`
- 字符串由一对单引号或者双引号包裹字符,用重音符也可以。默认字符串是一行的,分行会出错。
- 字符串中的每个字符合起来是一个整体。
- 字符串也有类似数组的下标,但是无法通过下标修改对应值
1 2 3 4 5 6 7 8 9 10 | var s = 'hello' ; delete s[0]; s // "hello" s[1] = 'a' ; s // "hello" s[5] = '!' ; s // "hello" |
- 字符串的length属性表示字符串的长度,同样也是不可修改的
12345678
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 语言的第七种数据类型,前六种是:undefined
、null
、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。Symbol 值通过
Symbol
函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
Undefined
undefined
表示“未定义”,下面是返回undefined
的典型场景。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 变量声明了,但没有赋值 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
是一个表示“空”的对象,转为数值时为0
;undefined
是一个表示"此处无定义"的原始值,转为数值时为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循环
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话