Ключевое слово Javascript по умолчанию

#javascript #mechanicalturk

#javascript #mechanicalturk

Вопрос:

Я использую некоторый существующий код, и есть эта строка, которую я не понимаю. Я знаю только, что default можно использовать как часть инструкции swtich, но не знал, есть ли для этого какое-то другое применение. Код работает. Это часть TurkIt, которая используется для запуска программ через MTurk от Amazon.

 function getQuestion(numA, numB) {
    default xml namespace = "http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionForm.xsd";
    var q = <QuestionForm> ...
 

Смотрите default перед xml namespace инструкцией.

Комментарии:

1. Как это работает? Что делает вторая строка? Как показано — это не должно работать. Вы уверены, что _ между ними нет default xml и namespace ?

2. вторая строка SyntaxError также является a, если это вообще работает, это потому, что она преобразуется в реальный javascript, который не запускается как есть.

3. @Esailija — Здесь нет синтаксиса в FF 7.0.1: jsfiddle.net/Ka833

4. @JaredFarrish Я думаю, что это консоль с поддержкой FF eval снова барахлит. Он терпит неудачу в консоли Chrome и в отдельном HTML.

5.@ZenMaster — Я получаю invalid default XML namespace здесь, что подразумевает, что что-то происходит, может быть, специфичное для Firefox?

Ответ №1:

default xml namespace является директивой ECMAScript для XML (E4X).

E4X — это расширение ECMAScript, которое позволяет обрабатывать XML как примитивный тип (это также то, что происходит с var q = <QuestionForm> ... частью). default xml namespace Директива устанавливает (как и следовало ожидать) пространство имен XML по умолчанию для той же области, что и директива.

Mozilla SpiderMonkey (движок, используемый Firefox и другими браузерами Gecko) и Rhino — единственные известные мне движки JavaScript, которые поддерживают E4X, но ActionScript 3 на основе ECMAScript также поддерживает. Я предполагаю, что TurkIt предназначен для работы на Rhino.

Комментарии:

1. Да, он использует Rhino. Большое спасибо.