Javascript';在';显示奇怪行为的函数

Javascript';在';显示奇怪行为的函数,javascript,Javascript,我只是在用Javascript测试中的操作符。当我运行类似于console.log(“文档中的cookie”)的东西时,它会记录true,但当我运行console.log(“cookiejar”中的cookie”)或将cookiejar分配给变量a,然后执行console.log(“a中的cookie”),我得到一条错误语句TypeError:invalid'in'操作数a。有人能告诉我为什么会这样吗?中的仅适用于对象,而不适用于字符串 : 5如果Type(rval)不是Object,则抛出一个

我只是在用Javascript测试
中的
操作符。当我运行类似于
console.log(“文档中的cookie”)
的东西时,它会记录
true
,但当我运行
console.log(“cookiejar”中的cookie”)
或将cookiejar分配给变量
a
,然后执行
console.log(“a中的cookie”)
,我得到一条错误语句TypeError:invalid'in'操作数a。有人能告诉我为什么会这样吗?

中的
仅适用于对象,而不适用于字符串

:

5如果Type(rval)不是Object,则抛出一个TypeError异常。

运算符不会执行您认为它会执行的操作。
b中的
告诉您给定对象b是否具有名为a的属性

不能在
中使用
搜索字符串中的字符。用这个

'cookiejar'.indexOf('cookie')


请注意,
中的
完全独立于且与之无关。

是的,文档可以:@Cupidvogel,因为
中的“cookie”
不是
中的“cookiejar”
的属性。它只是一个子串。@Cupidvogel不,它不是。您指的是
var color1=新字符串(“绿色”);颜色为1的“长度”;//返回真值
?字符串
length
不是字符串
green
的子字符串,但是字符串对象的属性
length
@Cupidvogel
for..in
in
完全不同
for..in
在对象的可枚举属性上循环
in
返回一个布尔值。@Cupidvogel yes:
obj.propertyEnumerable(“propertyName”)
在b
中的
a比b[a]的
类型有什么好处(实际用例)!=“undefined”
?@JanDvorak Yes——已重置为
undefined
,但仍存在于对象上的属性:“如果将属性设置为
undefined
,但不
删除它,in运算符将为该属性返回
true
。@JanDvorak:
b中的a肯定要短得多。此外,属性可以独立于其值是否定义而存在于对象上。@apsillers我想知道在什么情况下这才是所需的信息。@JanDvorak任何情况下
未定义
都是有效值。虽然很少见,但有可能。。。e、 在元编程类型中,属性表示变量所持有的值,而属性的缺失表示变量不存在。