js小知识点
程序员文章站
2022-07-14 11:43:20
...
文化
- javaScript是解释性语言,c c++ 是编译性语言 java是oak语言
- 解释性: 读一行执行一行
- 主流浏览器内核:
- IE: trident
- chrome: webkit/blink
- firefox: Gecko
- Opera: presto
- Safair: webkit
原始值不可改变: 声明一个变量之后,如果给这个变量赋予一个新值,那么会把之前的销毁掉,在内存中重新开辟内存来存
使用typeOf的时候如果是未定义的变量是不会报错的如果 typeOf(a)
try...catch
try {
} catch (e) {
}
- e是一个对象,含有name和message两个属性
- 错误类型:
- ReferenceError: 非法或者不能识别的引用值
- SyntaxError: 发生语法解析错误
- TypeError: 操作数类型错误
- URLError: URL处理函数使用不当
es3.0 和 es5.0冲突
- 浏览器默认是启用的是es3.0
- 启用es5.0: 'use strict' 放在整个页面的最顶端 或者局部的最顶端比如一个函数
- 默认是使用es3.0 + es5.0新增的方法去执行的, 但是es5.0和es3.0有冲突的部分,不启用严格模式默认使用的是es3的,如果他们俩产生冲突的
- 部分需要使用es5的,那么就需要启用严格模式。
- 不支持with,arguments.callee,func.caller,变量赋值前必须声明,
- 局部this必须被赋值(Person.call(null/undefined) 赋值什么就是什么),拒绝重复属性(object)和参数(function)
字符串
- var str = new String("foo")
- console.log(str) // 一个对象{ '0': 'f', '1': 'o', '2': 'o'}
- var bool = new Boolean(true)
- console.log(bool) //Boolean { true } 但是bool不等于true
- var number = new Number(111)
- console.log(number)//Number { 111 } 但是number不等于111
多行模板字符串:
console.log("string text line 1\n\
string text line 2");
// "string text line 1
// string text line 2"
为了实现同样效果的多行字符串, 现在可以写成如下形式:
console.log(`string text line 1
string text line 2`);
// "string text line 1
// string text line 2"
数字
- 数字在 JavaScript 中均用浮点数值表示
- parseInt() 第一个参数是要转的字符串,第二个是该参数对应的进制
- parseFloat()只应用于解析十进制数字
- 单元运算符 + 也可以把数字字符串转换成数值 例如 + "42" === 42
- parseInt parseFloat和 单元运算符 + 的区别:
- parseInt() 和 parseFloat() 函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有数字字符组成的数字。
- 使用运算符 "+" 将字符串转换成数字,只要字符串中含有无法被解析成数字的字符,该字符串都将被转换成 NaN
- 例如: parseInt("10.2abc",10) = 10 parseFloat("10.2abc",10) = 10.2 而 + "10.2abc" = NaN
- 布尔
- false、0、空字符串("")、NaN、null 和 undefined 被转换为 false
- 所有其他值被转换为 true
- JavaScript 会在需要一个布尔变量时隐式完成Boolean("value")这个转换操作
- typeof Boolean(value) === boolean //true