vuejs methods中的方法互相调用时变量的作用域是

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuejs methods中的方法互相调用时变量的作用域是相关的知识,希望对你有一定的参考价值。

参考技术A 作用域:它是指对某一变量和方法具有访问权限的代码空间,在js中,作用域是在函数中维护的。表示变量或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。javascript的作用域只有两种:全局作用域和本地作用域,本地作用域是按照函数来区分的。闭包:在js中的我的理解就是函数嵌套函数,当内部函数在定义它的作用域的外部被引用时,就创建了该内部函数的闭包,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被释放,因为闭包需要它们.使用闭包要注意:1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在ie中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(publicmethod),把内部变量当作它的私有属性(privatevalue),这时一定要小心,不要随便改变父函数内部变量的值。

在 data() 方法中读取时,VueJS 属性未定义

【中文标题】在 data() 方法中读取时,VueJS 属性未定义【英文标题】:VueJS prop is undefined when read in data() method 【发布时间】:2018-10-09 17:41:49 【问题描述】:

我无法理解 props 在 VueJS 中的工作原理,我们将不胜感激。这是一个简单的谷歌地图组件,我希望在页面上显示它并将 div 的 id 元素作为道具动态传递给底层模板。

html文件-

<div id="app">
    <google-map name="map"></google-map>
</div>

vue 文件-

<template>
    <div :id="mapName"></div>
</template>

<script>
module.exports = 
    name: 'google-map',
    props: [ 'name' ],
    data: () => 
        console.log(this.name); // ERROR: name is undefined
        return 
            mapName: this.name
        ;
    ,
    mounted: () => 
        const map = new google.maps.Map(document.getElementById(this.mapName), 
            zoom: 14,
            center: new google.maps.LatLng(39.305, -76.617)
        );
    

</script>

<style scoped>
#map 
  width: 800px;
  height: 600px;
  margin: 0 auto;
  background: gray;

</style>

我得到的错误是 this.name 在组件对象的 data() 方法中未定义。

【问题讨论】:

完全删除namedata;并使用name 而不是mapName。 guide的介绍部分的解释。 如果您希望发送name 并在子组件中使用mapName,请添加计算属性:computed: mapName: () =&gt; this.name 【参考方案1】:

console.log(this.name); 返回 undefined 的原因是您正在使用箭头函数。应该是

data: function() 
    // ...
,

mounted: function() 
    // ...

data() 
    // ...
,

mounted() 
    // ...

说明:

见https://vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks

【讨论】:

这就是原因...非常感谢! 你拯救了我的一天!只是想知道为什么它实际上不起作用? @AmirrezaNasiri 请参阅vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks =] 中的警告部分 @JacobGoh 哦,我明白了!我的错。

以上是关于vuejs methods中的方法互相调用时变量的作用域是的主要内容,如果未能解决你的问题,请参考以下文章

vue.js methods中的方法互相调用时变量的作用域是怎样的

vue.js methods中的方法互相调用时变量的作用域是怎样的

js文件调用vue里methods的方法

在 vueJs 中使用计算属性中的方法

vuejs中通过变量动态调用方法

created() 或计算属性中的 vuejs 初始化数据函数(方法)