Javascript &引用;函数声明不能嵌套在语句";-IE处于严格模式错误

Javascript &引用;函数声明不能嵌套在语句";-IE处于严格模式错误,javascript,internet-explorer,dom,use-strict,Javascript,Internet Explorer,Dom,Use Strict,在的“use strict”应用程序中,我使用document.createTreeWalker遍历DOM树。从浏览器中获取树后,我使用while循环将值推送到数组中。该代码是对优秀插件的升级,我的版本可以在运行中看到 编辑:但这没有意义,因为我不是在声明函数,我只是在执行一个函数。尽管如此,我还是按照fred02138的建议删除了styleAndSplit函数声明(我只是用函数代码替换了调用,并删除了声明)-但是并没有纠正错误 是否有不同的方法遍历TreeWalker,或者是否有IE的解决方法

的“use strict”
应用程序中,我使用
document.createTreeWalker
遍历DOM树。从浏览器中获取树后,我使用while循环将值推送到数组中。该代码是对优秀插件的升级,我的版本可以在运行中看到

编辑:但这没有意义,因为我不是在声明函数,我只是在执行一个函数。尽管如此,我还是按照fred02138的建议删除了
styleAndSplit
函数声明(我只是用函数代码替换了调用,并删除了声明)-但是并没有纠正错误


是否有不同的方法遍历
TreeWalker
,或者是否有IE的解决方法(在不丢失严格模式的情况下)?

将函数声明为变量将为我解决问题


如果您正在进行任何异步调用,请

您可以显示更多的代码吗?关于
样式和拆分
?这不是一个嵌套函数声明吗?@fred02138这毫无意义,因为我在应用程序的其他部分中使用了
use strict
,所以不会产生错误。更重要的是,它只发生在IE中。不过我会尝试一下。并让您知道。@fred02138它仍然在同一行上出现相同的错误。@scunlife如果只是为了有一个借口在这里发表此评论而遇到此错误是值得的,但我仍然希望有一个像样的解决方案;)
function injector(t, splitter, klass, after) {
    var inject = '', n,
        tree = [],
        styleStack = [],
        splitIndex = 0,

        styleAndSplit = function (node, splitter, klass, after) {
            var particles = $(node).text().split(splitter);

            // Wrap each particle with parent style tags if present
            for (var j = 0, len = particles.length; j < len; j++) {
                var str = '<span class="'+klass+((splitIndex++)+1)+'">'+particles[j]+'</span>'+after;

                for (var k = styleStack.length - 1, style; style = styleStack[k--];) {
                    str =   '<' + style.tagName.toLowerCase() + (style.className ? ' class="' + style.className + '"' : '') + '>' +
                            str + 
                            '</' + style.tagName.toLowerCase() + '>'
                }
                inject += str;
            }
        },

        Walker /* Texas Ranger */ = document.createTreeWalker(
            t,
            NodeFilter.SHOW_ALL,
            { acceptNode: function (node) {
                // Keep only text nodes and style altering tags
                if (node.nodeType === 3 || node.nodeType === 1 && !!node.tagName &&
                   (node.tagName.toLowerCase() === 'i' || 
                        node.tagName.toLowerCase() === 'b' || 
                            node.tagName.toLowerCase() === 'u' ||
                                node.tagName.toLowerCase() === 'span')) {

                    return NodeFilter.FILTER_ACCEPT;
                } else {
                    return NodeFilter.FILTER_SKIP;
                }
            }},
            false
        );

    while (n = Walker.nextNode()) tree.push(n);

    // This loop traverses all of the nodes in the order they appear within the HTML tree
    // It will then stack up nested styling tags accordingly
    for (var i = 0, node; node = tree[i++];) {
        if (node.nodeType === 1) {
            styleStack.push(node);
        } else {
            // Get rid of nodes containing only whitespace (newlines specifically)
            if ($.trim(node.nodeValue).length) {
                while (styleStack.length && node.parentNode !== styleStack[styleStack.length - 1]) { styleStack.pop(); }
                styleAndSplit(node, splitter, klass, after);    
            }
        }
    }       

    $(t).empty().append(inject);        
}
var arr = [1, 2, 3, 4, 5];
var index = null;
for (index in arr) {
    function myFunc() {};
}