Вот несколько известных библиотек, которые обрабатывают обнаружение браузера.
console.log(bowser);
document.write("You are using " + bowser.name +
" v" + bowser.version +
" on " + bowser.osname);
]
console.log(platform);
document.write("You are using " + platform.name +
" v" + platform.version +
" on " + platform.os);
var result = detect.parse(navigator.userAgent);
console.log(result);
document.write("You are using " + result.browser.family +
" v" + result.browser.version +
" on " + result.os.family);
console.log($.browser)
document.write("You are using " + $.browser.name +
" v" + $.browser.versionNumber +
" on " + $.browser.platform);
От MSDN:
Компромиссы Замыкания накоротко
Замыкание накоротко может улучшить производительность, не оценив выражение, которое не может изменить результат логической операции. Однако, если то выражение выполняет дополнительные действия, закорачивая пропуски те действия. Например, если выражение включает вызов в Функциональную процедуру, ту процедуру не называют, если выражение закорачивается, и любой дополнительный код, содержавшийся в Функции, не работает. Если Ваша логика программы зависит от какого-либо того дополнительного кода, необходимо, вероятно, постараться не закорачивать операторы.
там когда-нибудь обстоятельство, при котором я не хотел бы использовать оператор AndAlso, а не И оператор?
Уверенный: если Вы хотите удостовериться, что оба стороны выражения оценены. Это могло бы иметь место, если, например, обе стороны являются вызовами метода, которые возвращают булевские переменные в результате некоторой другой операции, которая имеет побочный эффект.
, Но в целом, используйте AndAlso
/ OrElse
каждый раз, когда Вы использовали бы &&
/ ||
в C/C ++/C#, который, конечно, является подавляющим большинством времени.