数值有length属性吗

我在浏览器控制台里直接输入78.length回车是报错的,但是,

var someValue = 78;
var strLength = someValue.length;
console.log(strLength);

这样不报错,只输出undefined,为什么?

阅读 4.8k
4 个回答

万物皆对象,Number类型继承于Number.prototype,Number.prototype继承于Object.prototype,所以获取number数值的length属性,会去Number.prototype及Object.prototype上找,找不到返回undefined

那么为什么78.length会报错呢?这就要讲到.的机制,在js中,.紧跟在整数后面会被理解为小数点,所以78.length报错,那么78.0.length就不会报错,78..length也不会报错,(78).length也不会报错,把数值保存在变量中访问属性也不会报错(这个和上一个加括号不抱错的原理一样)

没有length属性的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题