Atualizando aplicativos criados em versões anteriores do JScript

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

Por padrão, os programas de JScript 8.0 são compilados em modo rápido.Como o modo rápido coloca algumas restrições sobre os tipos de código que são permitidos, programas podem executar mais rapidamente e seja mais eficiente.No entanto, alguns recursos disponível nas versões anteriores não estão disponível no modo rápido.Em sua maioria, esses recursos são incompatíveis com aplicativos de múltiplos encadeamentos e produzido código ineficiente.Para programas compilados com o compilador de linha de comando, você pode desativar o modo rápido e tem retroativamente concluir 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 em ASP.NET aplicativos devido a problemas de estabilidade poderia apresentar de. Para obter mais informações, consulte / rápida.

Modo rápido

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

  • Todas as variáveis devem ser declaradas.

  • Constantes funções tornam-se.

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

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

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

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

  • método Eval não pode definir identificadores no escopo de fechamento.

  • método Eval executa scripts em um contexto de segurança restrito.

Todas as variáveis devem ser declaradas

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

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

JScript .NET também oferece suporte a anotações de tipo de variáveis.Isso vincula cada variável a um tipo de dados específico, e a variável pode armazenar somente dados desse tipo.Embora a anotação de tipo não for necessária, usá-lo ajuda a evitar 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 JScript variáveis e constantes.

Constantes funções tornam-se

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

No modo rápido, funções tornam-se constantes.Conseqüentemente, 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 seu script requer que uma alterar de função, você pode explicitamente usar uma variável para conter uma instância do Function objeto. Observe, entretanto, que Function os objetos são lentos. Para obter mais informações, consulte Objeto de função.

Objetos intrínsecos não podem ter propriedades expando

Nas versões anteriores do JScript, você pode adicionar propriedades expando a objetos intrínsecos.Esse comportamento pode ser usado para adicionar um método para um String objeto para aparar espaços entrelinhamento 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 funções no escopo global em vez de anexar essas funções a objetos sistema autônomo métodos.Em seguida, reescreva cada instância no script onde um método expando é chamado de objeto para que o objeto é passado para a função apropriada.

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

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

Nas 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 de toString método para o Date objeto, por exemplo.

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

O objeto de argumentos não está disponível

As versões anteriores do JScript forneciam um arguments objeto dentro de definições de função, que permitia funções aceitar um número arbitrário de argumentos. O objeto arguments também forneceu uma referência para a função corrente, bem sistema autônomo a função de chamada.

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

Não é possível para acessar diretamente e fazer referência a função corrente ou a função de chamada no modo rápido.

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

Nas versões anteriores do JScript, podem aparecer instruções atribuir um valor para um identificador de somente leitura.A atribuição falhará silenciosamente e a única maneira de detectar a falha da atribuição seria testar se o valor realmente alterada.Atribuição de um identificador de somente leitura geralmente é o resultado de um erro, pois ele tem nenhum efeito.

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

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

método Eval não pode definir identificadores no escopo de fechamento

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

No modo rápido, funções e variáveis podem ser definidas dentro de uma telefonar para o eval método, mas são acessíveis a partir dentro dessa telefonar 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 pode ser atribuído à variável acessível no escopo corrente. Chamadas para o eval método são lentas e você deve considerar reescrever o código que os contém.

O comportamento anterior do eval método é restaurado quando o modo rápido é desativado.

método Eval executa scripts em um contexto de segurança restrito

sistema autônomo versões anteriores do JScript, o código passado para o eval método será executado no mesmo contexto de segurança do código de chamada.

Para ajudar a proteger sistema autônomo usuários, o código passado para o evalmétodo é executado em um contexto de segurança restrito, a menos que a cadeia de caracteres "não segura" é passada sistema autônomo o segundo parâmetro. O contexto de segurança restrito ajuda a impedir o acesso aos recursos do sistema, sistema autônomo o sistema de arquivos, a rede ou a interface do usuário.Uma exceção de segurança é gerada se o código tenta acesso esses recursos.

Quando o segundo parâmetro da evalé a seqüência de caracteres "não segura" psistema autônomosed o código para o eval método é executado no contexto de segurança mesmo sistema autônomo o código de chamada. Isso restaura o comportamento anterior do eval método.

Observação de segurança:

Uso eval no modo não seguro somente para executar seqüências de código obtidos de fontes conhecidas.

Consulte também

Conceitos

Introdução ao JScript 8.0 para programadores JScript

Referência

/ rápida

Outros recursos

Introdução ao JScript