Typescript变量“不会出现在当前范围内”

时间:2013-01-01 07:40:36

标签: javascript typescript

我正在尝试使用以下代码:

$('body').bind('ajaxSend', function (elm, xhr, s) {
    if (s.hasContent && securityToken) {   // handle all verbs with content
        var tokenParam = "__RequestVerificationToken=" + encodeURIComponent(securityToken);
        s.data = s.data ? [s.data, tokenParam].join("&") : tokenParam;
        // ensure Content-Type header is present!
        if (s.contentType !== false || options.contentType) {
            xhr.setRequestHeader( "Content-Type", s.contentType);
        }
    }
});

我在帖子Stack Overflow post

中找到了这个

使用typescript我在“options”上遇到语法错误,说“名称选项不会出现在当前作用域中。

有人可以帮忙解释我收到此错误的原因。我看到选项没有被声明,并且想知道它来自哪里,如果它没有被声明。

2 个答案:

答案 0 :(得分:0)

就像JavaScript一样,在运行时,在任何封闭的函数作用域和全局作用域中搜索options变量,如果在任何地方都找不到,则抛出异常,因为它没有被定义

因此,大概在您从中提取的示例代码中,您应该假设options在其他位置定义,并且您需要执行相同的操作。

答案 1 :(得分:0)

我认为这一行存在轻微的错误:

 if (s.contentType !== false || options.contentType) {

实际应该是:

 if (s.contentType !== false || s.contentType) {

由于您的参数s是jQuery传递给您的函数的ajaxOptions