Toady я играл немного с сокращенным синтаксисом .. и нашла 2 новых интересные способы сделать написать длинный синтаксис скучного if
, также узнал что-то новое о замыканиях ...Работает ли сокращенный синтаксис javascript на старых браузерах?
это с тем, что я придумал.
Это функция переключения для меню аккордеона с одним 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)
}
и вот пример.
http://jsfiddle.net/YjCbM/ (протестировано с Chrome 29)
произошла ошибка .. это работает http://jsfiddle.net/YjCbM/1/
В этом примере я использую e.target, WebKit CSS3 и различные другие вещи, которые то есть и другие браузеры дон 't поддержка, но appart от этого ... делает ли этот сокращенный синтаксис работать с более старыми/другими браузерами?
ps.:don't tiddy вверх код в jsfiddle или ничего работает
EDIT после того, как я получил некоторые ответы ..
Некоторые полезные Shorthands
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 Таким образом, все время, но сохранить хороший код , а затем вручную переписать его таким образом, чтобы иметь БЫСТРЕЕ и КОРОЧЕ код
- Как вы можете прочитать в комментариях «Эй, смотри, что я могу сделать!» ... снова ... я не знал об этом, прежде чем я разместил эти функции, и я тестировал только в хроме в то время. И да, я пишу javascript с лета ... но не с этим сокращением & побитовыми операторами. что-то новое для меня.
- После тестирования некоторых утилит сжатия yuy obfuscator и больше я обнаружил, что они не могут сжимать ваш код таким образом, поэтому в любом случае ВЫ ДОЛЖНЫ НАПРАВЛЯТЬ ХОРОШИЙ КОД и не надейтесь, что различные компрессоры сделают это для вас так что вы пытаетесь вручную усовершенствовать свой код? ... ДА ЭТО ЧТО Я ПЫТАЮСЬ ДЕЛАТЬ.
я получил вопрос запрета для всех этих downvotes. но я действительно не могу понять, почему у меня так много downvotes ... PLS объяснить ваши downvotes.
Оператор запятой также должен поддерживаться всеми браузерами. –
Прохладный, вам не нужен собеседник с таким кодом. –
... вы пытаетесь вручную усовершенствовать свой код? Eesh, вы должны использовать лучшие имена переменных. – PherricOxide