JS基础
Posted sheep2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS基础相关的知识,希望对你有一定的参考价值。
个人总结
关于delete
- 在严格模式下,无论变量有没有被声明,都不能删除变量,会报错:delete是不合格的标识符
- 在非严格模式下
- 全局对象(window)的属性,是可以被删除的,如果删除后打印,会报错:not defined
- 而声明了的变量,是无法删除的
break 和 continue
list: {
for (let i=0; i<10; i++) {
if (i === 5) break //1 2 3 4
// if (i === 5) continue //1 2 3 4 6 7 8 9
console.log(i)
}
}
- break:可以跳出本次循环
- continue:跳过本次循环执行继续循环(如果有的话)
list: {
console.log(1)
console.log(2)
console.log(3)
break list //输出1 2 3
console.log(4)
}
- 当然,也可以利用label标记JS代码语句
- break 可以跳出任何带标签标记的代码块
- continue不能跳出带标签的代码块,只能用在循环中
typeof
console.log( typeof {} ) //object
console.log( typeof [] ) //object
console.log( typeof null ) //object
- 数组是一种特殊的对象类型
- null表示值为空,也是一种特殊的对象类型,但不等同于
{}
空对象
let obj = null
- 我们可以给一个不立即赋值使用的对象时,可以通过设置null值来初始化对象
console.log(typeof undefined) //undefined
console.log(null == undefined) //true
console.log(null === undefined) //false
- undefined表示一个没有设置值的变量,比如只声明不赋值时,变量值就是undefined
- null和undefined值相等,但是类型不同
- null用于对象,undefined用于变量,属性和方法
js代码类型
- 数据类型
- string
- number
- object
- array
- function
- 不包含值的数据类型
- null
- undefined
- 对象类型
- Object
- Array
- Date
类型转换
- 转换为布尔值
- NaN,0,false,null,undefined,"", 这些为false
- 其他的都为true,包括-infinity
- 转换为数字
- 布尔值:true为1,false为0
- 字符串:
- 纯数字字符串:转换后为其包含的数字,"110"就为110
- 不是纯数字字符串:值为NaN
- 空字符串:值为0
- 数字:
- infinity为infinity,-infinity为-infinity
- NaN为NaN
- 数组:
- 空数组:值为0
- 数组中只包含一个数字:只为所包含的数字,[20]就为20
- 数组中包含了多个值:值为NaN
- 函数:值为NaN
- 对象:值为NaN
- null:值为0
- undefined:值为NaN
错误捕捉
let x = NaN
try {
if (isNaN(x)) throw "值为NaN"
}
catch(err) {
console.log(`错误是:${err}`)
}
finally {
console.log(‘执行完毕~~‘)
}
/*
错误是:值为NaN
执行完毕~~
*/
- try:要测试的代码
- throw:创建或抛出异常
- catch:如果try出错,将throw的错误信息通过参数传入,然后这里处理错误信息
- finally:在try和catch之后,无论是否发生错误都会执行代码
精度问题
- 浮点数精度问题:0.1 + 1.2 != 0.3,实际上等于 0.30000000000000004
- toFixed() 精度不准确问题, 1.335.toFixed(2) == 1.33
- 类似的问题解决方案:
- 如果不是用于金额交易,核心方案就是先放大倍数再缩小倍数
- 如果用于金额方面,或者数字位数较大,还是用一些专门解决精度问题的第三方库
const a = 1.335
console.log((1.335 * 100).toFixed() / 100) //1.34
约束验证DOM方法
- checkValidity()
- 输入的值是合法的就返回true,否则返回flase
<input id="input" type="number" max="300" required>
<button id="btn">验证</button>
let oInput = document.getElementById(‘input‘)
let oBtn = document.getElementById(‘btn‘)
btn.onclick = function () {
if (oInput.checkValidity() == false) {
console.log(oInput.validationMessage)
}
}
- 通过validationMessage返回提示信息
JSON 与 js对象互相转换
- JSON.parse():将json字符串转换为js对象
//创建一个json字符串
const text = `{
"names": [
{"name": "蕾姆", "age": 18, "gender": "female"},
{"name": "拉姆", "age": 18, "gender": "female"},
{"name": "emt", "age": 14, "gender": "female"}
]
}`
//将json字符串转化为js对象
const obj = JSON.parse(text)
console.log(obj.names[0].name) //蕾姆
- JSON.stringify():将js对象转换为json字符串
const obj = {
name: "486",
age: 20,
gennder: "male"
}
const json = JSON.stringify(obj)
console.log(json) //{"name":"486","age":20,"gennder":"male"}
以上是关于JS基础的主要内容,如果未能解决你的问题,请参考以下文章