我是javascript的新手,并尝试修改我购买的网站模板,并且我很难理解变量被声明/使用的某种方式。
模板具有动态内容功能,因为JQuery扩展声明为:
window.theme = {};
(function(theme, $) {
// function
}).apply(this, [window.theme, jQuery]);
然后在一个单独的文件中,它们被初始化,如下例所示:
(function($) {
'use strict';
if ($.isFunction($.fn['themePluginAnimate'])) {
$(function() {
$('[data-plugin-animate], [data-appear-animation]').each(function() {
var $this = $(this),
opts;
var pluginOptions = $this.data('plugin-options');
if (pluginOptions)
opts = pluginOptions;
$this.themePluginAnimate(opts);
});
});
}
}).apply(this, [jQuery]);
令我困惑的是:
var $this = $(this),
opts;
通过谷歌搜索我的理解是这种使用逗号运算符的赋值方式意味着:
$(this) = opts;
$this = $(this);
我认为opts
尚未初始化,所以如何/为何将其用作作业?这个模式在每个模块上,所以我想在开始进行更改之前理解它。
我做了一些谷歌搜索,发现如果var = opt
被声明,那么它就会被提升,但这只是为了声明而不是初始化。
有人能告诉我这里发生了什么事吗?
答案 0 :(得分:2)
var oneThing = 1, anotherThing;
只是
的简写var oneThing = 1;
var anotherThing;
答案 1 :(得分:1)
如果我理解正确,那么你需要解释JavaScript init变量的方式。 首先,当JavaScript读取您的代码时 - 它会在函数的开头移动所有变量:
function(){
var a = 1;
console.log(a);//1
console.log(b);//undefined
var b = 2;
}
会像这样寻找JS:
function(){
var a,b;//first of all we declare variables.
a = 1;
console.log(a);// => 1
console.log(b);// => undefined
b = 2;
}
但是另一个函数在声明队列中具有更高的优先级,这就是为什么它们将在之前初始化:
function(){
console.log(func)// => function(){return 1;}
console.log(a)// => undefined
var a = 1;
function fun(){return 1;}
}
真正发生的事情:
function(){
function fun(){return 1;}//first of all functions
var a;//secondary variables
console.log(func)// => function(){return 1;}
console.log(a)// => undefined
a = 1;
}
这对你来说是一个小理论,因为我认为你会在最近的将来在代码中遇到这样的事情。
现在让我们找你代码:
var $this = $(this),
opts;
以及JavaScript如何阅读它?
var $this, opts;//declare all variables;
$this = $(this)//init variable $this
如果您对,
感到困惑,那么它只是您声明的变量之间的分隔符:
var a,b,c,d;
等于:
var a;
var b;
var c;
var d;
祝你好运!