Тип оÑибки
ЧÑо поÑло не Ñак?
ÐÑÑÑ Ð½ÐµÑÑÑеÑÑвÑÑÑÐ°Ñ Ð¿ÐµÑеменнаÑ, коÑоÑÐ°Ñ ÑÑÑлаеÑÑÑ ÐºÑда-Ñо. ÐÑа пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð¾Ð±ÑÑвлена, или вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑбедиÑÑÑÑ, ÑÑо она доÑÑÑпна в ваÑем ÑекÑÑем ÑкÑипÑе или облаÑÑи иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода ( scope).
ÐÑимеÑание:
ÐÑи иÑполÑзовании ÑÑоÑонниÑ
библиоÑек (Ñакие как jQuery), ÑбедиÑеÑÑ, ÑÑо они загÑÑжаÑÑÑÑ Ð´Ð¾ Ñого, как Ð²Ñ Ð¸ÑполÑзÑеÑе пеÑеменнÑе "$". ÐомеÑÑиÑе Ñег <script> загÑÑжаÑÑий ваÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Ð´Ð¾ Ñого как Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ ÐµÑ.
ÐÑимеÑÑ
>ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ обÑÑвлена
foo.substring(1); // ReferenceError: foo is not defined
ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ "Foo" не опÑеделена где-либо. Ðна должна бÑÑÑ Ð² какой-Ñо ÑÑÑоке, Ñак ÑÑÐ¾Ð±Ñ String.prototype.substring() меÑод наÑал ÑабоÑаÑÑ.
var foo = "bar";
foo.substring(1); // "ar"
ÐепÑавилÑÐ½Ð°Ñ Ð·Ð¾Ð½Ð° доÑÑÑпноÑÑи
ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð´Ð¾ÑÑÑпна в ÑекÑÑем конÑекÑÑе иÑполнениÑ. ÐеÑеменнÑе, опÑеделÑннÑе внÑÑÑи ÑÑнкÑии не могÑÑ Ð±ÑÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð¸Ð· лÑбой ÑоÑки за пÑеделами ÑÑнкÑии, Ñак как пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð¿Ñеделена ÑолÑко в облаÑÑи видимоÑÑи Ñамой ÑÑнкÑии.
function numbers() {
var num1 = 2,
num2 = 3;
return num1 + num2;
}
console.log(num1); // ReferenceError num1 is not defined.
Тем не менее, ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп ко вÑем пеÑеменнÑм и ÑÑнкÑиÑм, опÑеделÑннÑм в облаÑÑи видимоÑÑи, в коÑоÑой она опÑеделена. ÐÑÑгими Ñловами, ÑÑнкÑиÑ, опÑеделÑÐ½Ð½Ð°Ñ Ð² глобалÑной облаÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп ко вÑем пеÑеменнÑм, опÑеделÑннÑм в глобалÑном маÑÑÑабе.
var num1 = 2,
num2 = 3;
function numbers() {
return num1 + num2;
}
console.log(num1); // 2