Javascript IF语句中的返回值

Javascript IF语句中的返回值,javascript,angularjs,Javascript,Angularjs,我有一个带有以下简单代码的AngularJS指令: .directive('mdToggle', () => { return { link (scope, element) { element.on('click', () => { const liElements = 0; const liElementsHeight = 0; co

我有一个带有以下简单代码的AngularJS指令:

.directive('mdToggle', () => {
    return {
        link (scope, element) {
            element.on('click', () => {

                const liElements = 0;
                const liElementsHeight = 0;

                console.log(element[0].nextElementSibling !== null);
                if (element[0].nextElementSibling !== null) {
                    const liElements = element[0].nextElementSibling.getElementsByTagName('li').length;
                    const liElementHeight = element[0].nextElementSibling.getElementsByTagName('li')[0].clientHeight;
                }

                console.log(liElements * liElementsHeight);
            });
        }
    };
});

if语句返回一个真值,但
liElements
liElementHeight
仅在if范围内有效。如何将该值返回到范围之外,以便使用它?

不要重新声明,您将可以:

.directive('mdToggle', () => {
    return {
        link (scope, element) {
            element.on('click', () => {

                let liElements = 0;
                let liElementsHeight = 0;

                console.log(element[0].nextElementSibling !== null);
                if (element[0].nextElementSibling !== null) {
                    liElements = element[0].nextElementSibling.getElementsByTagName('li').length;
                    liElementHeight = element[0].nextElementSibling.getElementsByTagName('li')[0].clientHeight;
                }

                console.log(liElements * liElementsHeight);
            });
        }
    };
});

不要重新申报,您将被罚款:

.directive('mdToggle', () => {
    return {
        link (scope, element) {
            element.on('click', () => {

                let liElements = 0;
                let liElementsHeight = 0;

                console.log(element[0].nextElementSibling !== null);
                if (element[0].nextElementSibling !== null) {
                    liElements = element[0].nextElementSibling.getElementsByTagName('li').length;
                    liElementHeight = element[0].nextElementSibling.getElementsByTagName('li')[0].clientHeight;
                }

                console.log(liElements * liElementsHeight);
            });
        }
    };
});

如果
block
liElements=element[0],则从变量声明中删除
const
并使用
let
而不是
const
您不应该在
if
-范围内重新定义
liElements
liElementsHeight
并用
let
var
const
从变量声明中移除
if
block
liElements=元素[0]…
并使用
let
而不是
const
您不应该在
if
范围内重新定义
元素
liElementsHeight
并用
let
var
替换
const
。是的,有道理。“让声明”澄清了这一点。是的,有道理。“让声明”将其清除。