[[
имеет меньше неожиданностей и обычно более безопасен использовать. Но это не портативно - POSIX не определяет то, что это делает и только некоторые оболочки поддерживают его (около удара, я слышал, что ksh поддерживает его также). Например, можно сделать
[[ -e $b ]]
, чтобы протестировать, существует ли файл. Но с [
, Вы имеете к кавычке $b
, потому что она разделяет аргумент и разворачивает вещи как "a*"
(где [[
берет его буквально). Это должно также сделать с тем, как [
может быть внешняя программа и получает ее аргумент просто обычно как любая программа (хотя это может также быть встроенное, но тогда она все еще не имеет этой специальной обработки).
[[
также имеет некоторые другие хорошие функции, как соответствие регулярного выражения =~
наряду с операторами как они известны в подобном языкам C. Вот хорошая страница об этом: , Каково различие между тестом, [
и [[
? и Тесты Bash
Да, он полностью поддерживается во всех современных браузерах (включая IE6).
См .: http://www.quirksmode.org/dom/w3c_core.html#miscellaneous
В целом, он всегда работал нормально согласно спецификации DOM.
Но не ожидайте, что нестандартные расширения будут работать без проблем ... например, вы не можете установить innerHTML на DocumentFragment (что очень жаль, поскольку он мог бы значительно улучшить скорость вставки на некоторых больших страницах).