飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • JAVASCRIPT

    • JavaScript
    • 语句和表达式
    • 数组空位
    • 无法访问 undefined、null 的属性
      • 包装对象
    • currying
    • 装饰器 Decorator
    • ES6 的简单使用
    • Error 类型
    • 事件队列
    • 隐式转换
    • 调用表达式
    • 函数调用
    • 运算符优先级
    • 原型链
    • 正则 exec
    • 作用域与闭包
    • 一步步启用 babel7
    • 什么是 this
    • typeof
    • 全局属性 undefined
    • 自增/减

无法访问 undefined、null 的属性

经常会遇到报错信息:

Uncaught TypeError: Cannot read property 'xxx' of null
Uncaught TypeError: Cannot read property 'xxx' of undefined

而访问另外三个原始类型(Number、String、Number)则不会存在问题。

包装对象

. 符号可用来访问一个对象的属性。

当原始类型访问属性时就会调用各自对应的构造函数方法,如:

  1. Number:new Number(n);
  2. String:new String(s);
  3. Boolean:new Boolean(b)。

即可得到根本原因:

const N = new Number();
const S = new String();
const B = new Boolean();
typeof N === typeof S === typeof B === "object"

引申:

typeof null; // object

按照 JavaScript 中类型的划分应当返回为 null,这是 JavaScript 中一直存在的 bug,但永远都不会修复了,因为有太多已经在运行代码依赖于这个 bug。

编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
数组空位
Next
currying