Compartilhar via


Atualizando aplicativos criados em versões anteriores do JScript

A maioria do código de JScript existente funcionará bem com os aprimoramentos incluídos no JScript 10.0 porque JScript 10.0 é quase totalmente compatível com versões anteriores. Os novos recursos do JScript 10.0 abrangem áreas de novas.

Por padrão, os programas de JScript 10.0 são compilados em o modo rápido. Desde que o modo rápido coloca algumas restrições sobre os tipos de código são permitidos, os programas podem ser mais eficiente e executar mais rapidamente. No entanto, alguns recursos disponíveis nas versões anteriores não estão disponíveis no modo rápido. Na maior parte, esses recursos são incompatíveis com aplicativos multithread e produzido códigos ineficientes. Para programas compilados com o compilador de linha de comando, você pode desativar o modo rápido e tem concluir com versões anteriores de compatibilidade. Observe que o código compilado dessa maneira é mais lento e mais suscetível a erros. Modo rápido não pode ser desativado ASP.NET aplicativos devido os problemas de estabilidade seria presente. Para obter mais informações, consulte / rápido.

Modo rápido

No modo rápido, os seguintes comportamentos JScript são disparados:

  • Todas as variáveis devem ser declaradas.

  • Funções tornam-se constantes.

  • Objetos intrínsecos não podem ter propriedades de expando.

  • Objetos intrínsecos não podem ter propriedades listadas ou alterado.

  • O objeto arguments não está disponível.

  • Não é possível atribuir a uma variável de somente leitura, o campo ou o método.

  • método Eval não é possível definir identificadores no escopo delimitador.

Todas as variáveis devem ser declaradas.

Versões anteriores do JScript não exigia a declaração explícita de variáveis. Embora esse recurso economiza pressionamentos de teclas para programadores, ele também dificulta a erros de rastreamento. Por exemplo, você pode atribuir um valor para um nome de variável incorreta, o que poderia gerar um erro nem retornar o resultado desejado. Além disso, as variáveis não declaradas tem escopo global, o que pode causar confusão adicional.

Modo rápido requer declarações de variável explícitas. Isso ajuda a evitar os tipos de erros mencionados acima e produz um código que é executado mais rapidamente.

JScript.NET também oferece suporte a variáveis anotados por tipo. Isso vincula cada variável para um tipo de dados específico e a variável pode armazenar apenas os dados desse tipo. Embora a anotação de tipo não for necessária, usar ele ajuda a evitar os erros associados acidentalmente armazenando dados incorretos em uma variável e pode aumentar a velocidade de execução do programa.

Para obter mais informações, consulte Constantes e variáveis de JScript.

Funções tornam-se constantes

Em versões anteriores do JScript, as funções declaradas com a function instrução foram tratados da mesma como variáveis que mantinha uma Function objeto. Em particular, qualquer identificador de função pode ser usado como uma variável para armazenar qualquer tipo de dados.

No modo rápido, funções, tornam-se constantes. Conseqüentemente, as funções não podem ter novos valores atribuídos a eles ou ser redefinidas. Isso impede que acidentalmente alterar o significado de uma função.

Se o seu script requer que uma alteração de função, você pode usar explicitamente uma variável para armazenar uma instância de Function objeto. Entretanto, observe que Function objetos estão lentos. Para obter mais informações, consulte O objeto de função.

Objetos intrínsecos não podem ter propriedades de expando

Em versões anteriores do JScript, você poderia adicionar expando propriedades para objetos intrínsecos. Esse comportamento pode ser usado para adicionar um método para um String o objeto para aparar o líder espaços para a seqüência de caracteres, por exemplo,

No modo rápido, isso não é permitido. Se o script utiliza esse recurso, você deve modificar o script. Você pode definir as funções no escopo global em vez de anexar essas funções para objetos como métodos. Em seguida, reescreva cada instância no script onde um método expando é chamado a partir do objeto para que o objeto é passado para a função apropriada.

Uma exceção notável a essa regra é o Global o objeto, que ainda pode ter expando propriedades. Todos os identificadores no escopo global são na realidade propriedades da Global objeto. Obviamente, o Global o objeto deve ser dinamicamente extensível para oferecer suporte a adição de novas variáveis globais.

Objetos intrínsecos não podem ter propriedades listadas ou alterado

Em versões anteriores do JScript, você pode excluir, enumerar ou gravar as propriedades predefinidas de objetos intrínsecos. Esse comportamento pode ser usado para alterar o padrão toString método de Date o objeto, por exemplo,

No modo rápido, isso não é permitido. Esse recurso não é mais necessário, pois os objetos intrínsecos não podem ter expando propriedades e as propriedades de cada objeto são listadas na seção de referência. Para obter mais informações, consulte objetos.

O objeto arguments não está disponível

Versões anteriores do JScript fornecido um arguments o objeto dentro de definições de função, que permitido funções aceitar um número arbitrário de argumentos. O objeto arguments também forneceu uma referência à função atual, bem como a função de chamada.

No modo rápido, o arguments objeto não está disponível. No entanto, o JScript 10.0 permite que as declarações de função especificar um matriz de parâmetro na lista de parâmetros de função. Isso permite que a função aceitar um número arbitrário de argumentos, assim, substituindo parte da funcionalidade da arguments objeto. Para obter mais informações, consulte função declaração.

Não há nenhuma maneira de acessar diretamente e fazer referência a função atual ou a função de chamada no modo rápido.

Não é possível atribuir a um campo, método ou variável de somente leitura

Em versões anteriores do JScript, podem aparecer instruções atribuir um valor para um identificador de somente leitura. A atribuição falhará silenciosamente e seria a única maneira de descobrir a falha de atribuição testar se o valor realmente alterado. Atribuição de um identificador de somente leitura normalmente é o resultado de um engano, desde que ele não tem efeito.

No modo rápido, um erro de tempo de compilação será gerado se você tentar atribuir um valor a um identificador de somente leitura. Você pode remover a atribuição ou tente atribuir a um identificador que não é somente leitura.

Se você desativar o modo rápido, atribuições de identificadores de somente leitura falhará silenciosamente em tempo de execução, mas um aviso de tempo de compilação será gerado.

método Eval não é possível definir identificadores no escopo de fechamento

Em versões anteriores do JScript, funções e variáveis poderiam ser definidas no escopo global ou local por uma chamada para o eval método.

No modo rápido, funções e variáveis podem ser definidas dentro de uma chamada para o eval método, mas eles são acessíveis a partir dentro dessa chamada específica. Uma vez o eval for concluído, as funções e variáveis definidas dentro de eval não serão mais acessíveis. O resultado de um cálculo feito dentro de um eval podem ser atribuídos a qualquer variável acessível no escopo atual. Chama o eval método são lentos, e você deve considerar a reescrever o código que os contém.

O comportamento anterior a eval método é restaurado quando o modo rápido é desativadas.

Consulte também

Referência

/ rápido

Conceitos

Introdução ao JScript 10.0 para programadores de JScript

Outros recursos

Introdução ao JScript