MS Word | VBA | Выбор страницы вывода, если нижний колонтитул содержит «текст»

Заварить чай:

!! не является оператором. Это двойное использование ! - это логический оператор «не».


В теории:

! определяет «истину» того, что не является значением:

  • Правда заключается в том, что false не true (поэтому !false приводит к true)
  • Правда заключается в том, что true не false (поэтому !true приводит к false)

!! определяет «истину» того, что значение не не:

  • Правда что true не не true (поэтому !!true приводит к true)
  • Истина заключается в том, что false не не false (поэтому !!false приводит к false)

. Мы хотим определить в сравнении «правду» о значение ссылки, а не значение самой ссылки. Существует прецедент, где нам может понадобиться знать правду о значении, даже если мы ожидаем, что значение будет false (или falsey), или если мы ожидаем, что значение не будет typeof boolean.


На практике:

Рассмотрим краткую функцию, которая обнаруживает функциональность функциональности (и в этом случае совместимость с платформой) посредством динамического ввода ( aka «утиная печать»). Мы хотим написать функцию, которая возвращает true, если браузер пользователя поддерживает элемент HTML5 , но мы не хотим, чтобы функция выдавала ошибку, если не определено; и мы не хотим использовать try ... catch для обработки любых возможных ошибок (потому что они валовые); , а также мы не хотим использовать проверку внутри функции, которая не будет постоянно показывать правду об этой функции (например, document.createElement('audio') все равно будет создавать элемент с именем , даже если HTML5 не поддерживается).


Вот три подхода:

// this won't tell us anything about HTML5 `

Каждая функция принимает аргумент для поиска и attribute для поиска, но каждый из них возвращает разные значения, основанные на том, что определяют сравнения.

Но подождите, есть еще!

Некоторые из вас, вероятно, заметили, что в этом конкретном примере можно просто проверить свойство с помощью немного более совершенного средство проверки того, имеет ли объект, о котором идет речь свойство . Есть два способа сделать это:

// the native `hasOwnProperty` method
var qux = function(tag, atr) { return document.createElement(tag).hasOwnProperty(atr); }

// the `in` operator
var quux = function(tag, atr) { return atr in document.createElement(tag); }

qux('audio', 'preload');  // returns true
quux('audio', 'preload'); // returns true

Мы отвлекаемся ...

. В редких случаях это может быть, может существовать несколько сценариев, в которых наиболее сжатые, наиболее результативные , и поэтому наиболее предпочтительным способом получения true из небулевого, возможно неопределенного значения, является использование !!. Надеюсь, это смешно очистит его.

0
задан Kara 22 February 2015 в 21:56
поделиться