Руководство PHP говорит:
isset - определить, установлена ли переменная и не равна ли NULL
И интерфейс примерно такой:
bool isset ( mixed $var [, mixed $... ] )
Параметр $var
- это проверяемая переменная. хотя он может иметь любое количество параметров.
isset () возвращает TRUE
, если переменная существует и имеет значение, отличное от NULL
. FALSE
в противном случае.
Пример:
$foo = 'bar';
var_dump(isset($foo)); -> true
$baz = null;
var_dump(isset($baz)); -> false
var_dump(isset($undefined)); -> false
Учитывая это, по-видимому, невозможно написать точный эквивалент функции php isset()
.
Например, когда мы звоним так:
if (isset(some_var)) {
}
function issset() {
// function definition
}
Javascript триггер Uncaught ReferenceError: some_var is not defined at (file_name):line_number
.
Важным и примечательным в этом поведении является то, что при попытке передать несуществующие переменные нормальным функциям возникает ошибка.
Но в PHP isset()
на самом деле не обычные функции, а языковые конструкции. Это означает, что они являются частью самого языка PHP, не играют по обычным правилам функций и, следовательно, могут избегать появления ошибки для несуществующих переменных. Это важно при попытке выяснить, существует ли переменная или нет. Но в javscript он в первую очередь вызывает ошибку, скажем, вызов функции с несуществующими переменными.
Я хочу сказать, что мы не можем написать это как эквивалентную функцию javscript, но мы можем сделать что-то вроде этого
if (typeof some_var !== 'undefined') {
// your code here
}
Если вы хотите точно такой же эффект, PHP также проверьте, что varable не NULL
Например
$baz = null;
var_dump(isset($baz)); -> false
Итак, мы можем включить это в javascript, тогда это будет выглядеть так:
if (typeof some_var !== 'undefined' && some_var !== null) {
// your code here
}