Сборка от 17 марта 2017 г



Download 9,9 Mb.
bet210/349
Sana26.04.2022
Hajmi9,9 Mb.
#582433
TuriУчебник
1   ...   206   207   208   209   210   211   212   213   ...   349
Bog'liq
ilja kantor sovremennyj uchebnik-1chast PdfToWord

JSON и eval


В браузерах IE7‑ не было методов JSON.stringify и JSON.parse , поэтому работа с JSON происходила через eval .


Этот способ работы с JSON давно устарел, но его можно встретить кое‑где в старом коде, так что для примера рассмотрим его. Вызов eval(code) выполняет код и, если это выражение, то возвращает его значение, поэтому можно в качестве кода передать JSON. Например:


var str = '{ \ "name": "Вася", \ "age": 25 \


}';
var user = eval('(' + str + ')'); alert( user.name ); // Вася

Зачем здесь нужны скобки eval( '(' + str + ')' ) , почему не просто eval(str) ?


…Всё дело в том, что в JavaScript с фигурной скобки { начинаются не только объекты, а в том числе и «блоки кода». Что имеется в виду в данном случае – интерпретатор определяет по контексту. Если в основном потоке кода – то блок, если в контексте выражения, то объект.


Поэтому если передать в eval объект напрямую, то интерпретатор подумает, что это на самом деле блок кода, а там внутри какие‑то двоеточия… Вот, для примера, eval без скобок, он выдаст ошибку:

var user = eval('{ "name": "Вася", "age": 25 }');


А если eval получает выражение в скобках ( ... ) , то интерпретатор точно знает, что это не блок кода, а объект:


var user = eval('( { "name": "Вася", "age": 25 } )'); alert( user.age ); // 25



Итого





  • Функция eval(str) выполняет код и возвращает последнее вычисленное выражение. В современном JavaScript она используется редко.

  • Вызов eval может читать и менять локальные переменные. Это – зло, которого нужно избегать.

  • Для выполнения скрипта в глобальной области используются трюк с window.eval/execScript . При этом локальные переменные не будут затронуты, так что такое выполнение безопасно и иногда, в редких архитектурах, может быть полезным.

  • Если выполняемый код всё же должен взаимодействовать с локальными переменными – используйте new Function . Создавайте функцию из строки и передавайте переменные ей, это надёжно и безопасно.

Ещё примеры использования eval вы найдёте далее, в главе Формат JSON, метод toJSON.


Задачи






Download 9,9 Mb.

Do'stlaringiz bilan baham:
1   ...   206   207   208   209   210   211   212   213   ...   349




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish