JavaScript - Определите, определяется ли свойство и устанавливается на 'неопределенный', или неопределенное

Предупреждение: [fункция] : не удалось открыть поток: [причина]

Это происходит, когда вы обычно вызываете файл include , require или fopen, и PHP не смог найти файл или не имел достаточного разрешения на загрузку файла.

Это может произойти по разным причинам:

  • неправильный путь к файлу
  • путь к файлу относительный
  • include path is wrong
  • разрешения слишком ограничительные
  • SELinux в силе
  • и многие другие ...

Одна из распространенных ошибок заключается в том, чтобы не использовать абсолютный путь. Это можно легко решить, используя полный путь или магические константы , такие как __DIR__ или dirname(__FILE__):

include __DIR__ . '/inc/globals.inc.php';

или:

require dirname(__FILE__) . '/inc/globals.inc.php';

Обеспечение правильного пути используется одним шагом в устранении этих проблем, это также может быть связано с несуществующими файлами, правами файловой системы, предотвращающими доступ или открытыми ограничениями на основе самого PHP.

Лучший способ для быстрого решения этой проблемы необходимо выполнить контрольный список устранения неполадок ниже.

Вопросы, относящиеся:

Связанные ошибки:

37
задан nicael 11 May 2014 в 18:56
поделиться

7 ответов

Немного более простой путь, чем Ваш метод состоит в том, чтобы использовать JavaScript в операторе

alert('x' in o); // true
alert('x' in t); // false
66
ответ дан Greg 27 November 2019 в 04:29
поделиться

object.hasOwnProperty (имя) только возвращает true для объектов, которые находятся в том же объекте и лжи для всего остального, включая свойства в прототипе.

function x() {
  this.another=undefined;
};

x.prototype.something=1;
x.prototype.nothing=undefined;
y = new x;

y.hasOwnProperty("something"); //false
y.hasOwnProperty("nothing"); //false
y.hasOwnProperty("another"); //true

"someting" in y; //true
"another" in y; //true

Дополнительно единственный путь действительно удаляет свойство, должен использовать, удаляют. Установка его к неопределенному НЕ удаляет его.

надлежащий способ сделать это состоит в том, чтобы использовать в как сказанный roborg.

Обновление: неопределенный примитивное значение, см. раздел ECMAScript Language Specification 4.3.2 и 4.3.9.

8
ответ дан Community 27 November 2019 в 04:29
поделиться

Что-то вроде этого?

function isDefined(var){
   return (typeof(window[var]) == 'undefined') ? false : true;
}

или..

function isDefined(var){
   return (window.var === undefined) ? false : true;
}
1
ответ дан adam 27 November 2019 в 04:29
поделиться

Ach, один для антишаблонов распараллеливают там.

undefined не ключевое слово.

при присвоении записи var foo = undefined; Вы присваиваете ей значение символа undefined, который Вы не определили, и следовательно значение, которое Вы получите, "undefined". Вы привели бы точно к тому же результату при присвоении его UnDeFiNeD или NotFineAtAll или _qwertyuiop

, Почему это настолько ужасно? Далеко от того, что это приводит к ложному пониманию того, что продолжается, что происходит, если Вы, оказывается, загружаете библиотеку или нанимаете dev, кто пишет var undefined = true;

4
ответ дан annakata 27 November 2019 в 04:29
поделиться

Нет. Я не думаю, что переменная, равная undefined, должна быть распознана, как "определено".

Установка это равняется undefined, непосредственно просто ленивый способ удалить его - как соединено к использованию delete ключевое слово. Я полагаю, что это просто означает, что сборка "мусора" не взяла влияние на переменной/свойстве.

<час>

[ РЕДАКТИРОВАНИЕ ]

Относительно Вашего комментария [приблизительно 114] и propertyIsEnumerable, методы/свойства прототипа не являются ни объектом, собственным ни счетным.

Object.prototype.foo = 'something';

var o = {bar: 'anything'};
o.hasOwnProperty('foo');  //=> false
o.hasOwnProperty('bar');  //=> true

Object.prototype.hasOwnProperty('foo');  //=> true
1
ответ дан Jonathan Lonowski 27 November 2019 в 04:29
поделиться

Один способ сделать это является этим:

var definedProperties = [];
for (var prop in o) definedProperties.push(prop);

if (o.x === undefined && contains(prop, 'x')) {
    //x is defined, but set to undefined
}

, где contains просто проверки, является ли какой-либо элемент в массиве 'x'. Действительно ли это - единственный путь?

0
ответ дан Claudiu 27 November 2019 в 04:29
поделиться

Вы могли попытаться поместить часы на One.x, но это только скажет Вам в то время, когда это становится неопределенным.

0
ответ дан nickf 27 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: