// 例子1
function Person(name) {
this.name = name
return name;
}
let p = new Person('Tom');
// 问:p或者Person返回什么?
// 答:{name: 'Tom'}
// 例子2
function Person(name) {
this.name = name
return {}
}
let p = new Person('Tom');
// 问:p或者Person返回什么?
// 答:{}
对于上述的解析:构造函数不需要显示的返回值。使用new来创建对象(调用构造函数)时,如果return的是非对象
(数字、字符串、布尔类型等)会忽略返回值;如果return的是对象,则返回该对象(注:若return null也会忽略返回值)。
parseInt('101',2) // 5 -> 1 * 2^2 + 0 * 2 + 1 * 2^0 = 4 + 0 + 1 = 5
parseInt('133',2) // 1 -> 将133看作2进制数,由于2进制是0-1 1 * 2^0 = 1
parseInt('3',2) // NaN -> 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN
parseInt('13733',5) // 8 -> 将13733看作5进制数,由于5进制是0-4 1 * 5^1 + 3 * 5^0 = 5 + 3 = 8
// 例子:
const user = '{"name": "John","email": "john@awesome.com",}'
const userStr = JSON.parse(user) // Uncaught SyntaxError: Unexpected token } in JSON at position 44
let array = [,1,,2,,3];
array = array.map((i) => ++i) // [,2,,3,,4]
// 解析:forEach,filter,every,some,map会跳过空位