速记javascript语法在旧浏览器上有效吗?

速记javascript语法在旧浏览器上有效吗?,javascript,Javascript,今天我玩了一点速记语法。。并且发现了两种新的很酷的方法来编写冗长乏味的if语法,还学到了闭包的新东西 这就是我想到的 它是一个带有一个eventHandler的手风琴菜单的切换函数 function h(e){ var p='parentNode',a=e.target,b=a[p],f=48,u='px',y=b[p]; !y.c||(y.c==b||(y.c.style.height=f+u,y.c.x=f)), y.c=y.c==b?null:b, a!=b.firstChild|

今天我玩了一点速记语法。。并且发现了两种新的很酷的方法来编写冗长乏味的if语法,还学到了闭包的新东西

这就是我想到的

它是一个带有一个eventHandler的手风琴菜单的切换函数

function h(e){
 var p='parentNode',a=e.target,b=a[p],f=48,u='px',y=b[p];
 !y.c||(y.c==b||(y.c.style.height=f+u,y.c.x=f)),
 y.c=y.c==b?null:b,
 a!=b.firstChild||(b.x=b.x>f?f:
 (f+b.childNodes[1].offsetHeight),b.style.height=b.x+u)
}
下面是一个例子

用铬29测试

有一个错误。。这是有效的

在这个例子中,我使用了e.target、webkit css3以及ie和其他浏览器不支持的各种其他东西,但从中可以看出。。。这种速记语法在旧浏览器/其他浏览器上有效吗

注:不要整理JSFIDLE中的代码,否则一切都不起作用

编辑 在我得到一些答案之后

一些有用的速记

var W=window,D=W.document,G='getElementById',
E=W.addEventListener?'addEventListener':'attachEvent',
// this awesome as i don't use jQuery. 
// this way i have a short getElementbyId() like jQuery's $()
// and also a ie compatible addEventListener.

a=D[G](x);
//document.getElementById(x)
a[E]('click',handler);
//a.addEventListener() or a.attachEvent()

a=x?y:x
//if x is defined, true, or not 0 it will take the y value 
if ( x == true ) {
 a = y;
}else{
 a = x;
}

a=x||y;
//if x is not defined it will take y
if ( x == true ) {
 a = x
}else{
 a = y
}


x||(x=y,alert(x)) // <- this is fabulous
// if x is  not defined, not true, or 0 it will set the x with the y value 
// and alert x
if ( x == 'undefined' ) {
 x = y;
 alert ( x );
}
// how manytimes did it happen that you wanted to do just a short check but you hat to 
//set 2-3 variables and could not use a simple  a=x||y
// whith this shorthand you can.

var a = 1;
var b;
var c = a;
// is the same as
var a=1,b,c=a;
编辑2

我真的不知道这种闭包和速记 关键不是要一直以这种方式编写javascript,而是要保留一个好的代码 然后以这种方式手动重写,以获得更快、更短的代码 正如你在评论中看到的,嘿,看看我能做什么。。。再一次在我发布这个函数之前我并不知道这一点,当时我只在chrome上进行了测试。。。但不是用这种速记和位运算符。这对我来说是新的东西。 在测试了一些压缩实用程序yuy obfuscator等之后,我发现它们不能像这样压缩您的代码,所以在任何情况下,您都必须编写一个好的代码,并且不希望各种压缩器为您这样做,所以您是否尝试手动缩小您的代码。。。是的,这就是我想做的。
我因为这些反对票而被禁止提问。但我真的不明白为什么我得到这么多的反对票。。。请解释你的反对票。

如果你指的是三元运算符,?:,那么是的,这在所有浏览器中都受支持

它是这样使用的:

condition ? ifTrue : ifFalse
例如:

'You have ' + (milkAmount <= 0 ? 'no' : (milkAmount + ' cups')) + ' of milk!'
a || b || c

这将从a、b和c中找到第一个变量,并选择第一个不是falsy undefined、0、false、NaN等的变量。

所有浏览器也应支持逗号运算符。很酷,您不需要代码如下的obsufcator。。。。您是否正在尝试手动缩小代码?Eesh,你应该使用更好的变量名。你为什么要这样写代码?你知道这通常是由一个用来减少文件大小的工具产生的,对吗?我们不只是为了踢球而打高尔夫,大多数时候我甚至不明白这是个什么问题。看起来更像是,嘿,看看我能做什么!祝贺您,您可以编写难以辨认、无法维护的代码。您好| | x=0,alertr@cocco:逻辑OR运算符属于语言的最基本的部分。你可以期待这些东西在浏览器中得到支持。a | | b | | c=a | | b | c?@cocco不,它只是选择第一个真实的。你的第二个也会这样做,但是括号是不相关的。a | | b | | c==a | | b | | c==a | | b | | c.@Coco请使用谷歌,不要在评论中提出后续问题。一个快速的5秒钟谷歌搜索会给你答案。