我在浏览器控制台里直接输入78.length回车是报错的,但是,
var someValue = 78;
var strLength = someValue.length;
console.log(strLength);
这样不报错,只输出undefined,为什么?
我在浏览器控制台里直接输入78.length回车是报错的,但是,
var someValue = 78;
var strLength = someValue.length;
console.log(strLength);
这样不报错,只输出undefined,为什么?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
万物皆对象,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
也不会报错,把数值保存在变量中访问属性也不会报错(这个和上一个加括号不抱错的原理一样)