两者之间有什么区别吗?
obj = {'foo': 'bar'}
Run Code Online (Sandbox Code Playgroud)
和
obj = {foo: 'bar'}
Run Code Online (Sandbox Code Playgroud)
我注意到-当我不使用引号时你不能在密钥中使用.但它真的有所作为吗?如果是的话,哪个?
为什么aaa = 1,2,3工作和设置的值aaa来1?
为什么不起作用var bbb = 1,2,3?
为什么var bbb = (1,2,3)工作和设置的值bbb来3?

我正在尝试找出对javascript对象的属性名称有效的内容.例如
var b = {}
b['-^colour'] = "blue"; // Works fine in Firefox, Chrome, Safari
b['colour'] = "green"; // Ditto
alert(b['-^colour']); // Ditto
alert(b.colour); // Ditto
for(prop in b) alert(prop); // Ditto
//alert(b.-^colour); // Fails (expected)
Run Code Online (Sandbox Code Playgroud)
这篇文章详细介绍了有效的javascript变量名称,' - ^ color'显然无效(作为变量名).这同样适用于对象属性名称吗?看看上面我试图解决的问题
b [' - ^ color']无效,但可以在所有浏览器中使用quirk,我不应该相信它可以继续工作
b [' - ^ color']是完全有效的,但它只是一种只能以这种方式访问的形式 - (它支持所以对象可以用作地图吗?)
还有别的
顺便说一句,javascript中的全局变量可能会在顶层声明为
var abc = 0;
Run Code Online (Sandbox Code Playgroud)
但也可以创建(据我所知)
window['abc'] = 0;
Run Code Online (Sandbox Code Playgroud)
以下适用于所有上述浏览器
window['@£$%'] = "bling!";
alert(window['@£$%']);
Run Code Online (Sandbox Code Playgroud)
这有效吗?它似乎与变量命名规则相矛盾 - 或者我不是在那里声明变量?变量和对象属性名称之间有什么区别?
如果我有一个<div id='a'>Chrome浏览器,那么在javascript中我可以做(就好像是一个全局变量).a.stuff()a
然而,这不适用于FireFox - 我将需要使用document.getElementById('a').
这里的正确行为是什么?(根据W3规格)
另外我感兴趣的是,如果我有一个id为div a但a在我的脚本中也有一个全局变量,Chrome将如何解决这种歧义.这种行为是随机的还是笨拙的?
如何将一个id由连字符(" - "),冒号(":")和句点(".")组成的元素进行翻译(好吧我知道它们可以被访问document.getElementById但浏览器将如何将其转换为表示它们的全局变量)
我有一些看起来像的代码
self = @
Run Code Online (Sandbox Code Playgroud)
然后使用@someMethodName或self.someMethodName
@有一些特殊含义吗?
这可能是一个愚蠢的问题,但我无法在互联网上找到任何关于此的文件.
当声明变量在Javascript中使用我通常使用var x = 0但我在他们使用的jQuery教程中看到过$x = 0.那两个有什么区别?
此外,我会以同样的方式调用这两个变量,还是我之前需要使用$ mark?例如:for(i=0; i < x; i++)或for(i=0; i < $x; i++)
使用[]和.访问数组或对象属性的真正区别是什么?哪一个使用?
另外为什么.运营商不允许索引属性?
我正在尝试学习jQuery,我在一个例子中遇到了这一行.
var $title = $(tag).attr('title');
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我前面的$是什么$title.
如果我$title用just 替换,这个例子似乎工作正常title.
我知道这可能是一个愚蠢的问题,但它是浪费时间谷歌搜索"$的目的"
非常感谢.
我最近看到一些(遗留的)javascript代码看起来像:
function window.onload(){
// some code
}
Run Code Online (Sandbox Code Playgroud)
这对我来说看起来不像是有效的javascript,因为你不能在标识符中有句号,但它似乎在IE8中有效.我认为它相当于:
window.onload = function(){}
Run Code Online (Sandbox Code Playgroud)
我在Chrome和IE9中尝试了相同的代码,它们都引发了语法异常,所以我认为IE8的这个"特性"是一些应该被替换的非标准函数定义吗?有问题的代码只发送到IE浏览器,所以这可能是我之前没有遇到过这个问题的原因.
我一直在Javascript中使用方括号表示法来创建和调用关联数组.
在这个例子中,我理解方括号表示法允许您使用变量来调用数组中的某个对象.
你会用点符号做这样的事情吗?
var item = {};
item['1'] = 'pen';
var x = 1;
console.log(item[x]); // console will show 'pen'
Run Code Online (Sandbox Code Playgroud)