javascript,函数与变量

时间:2015-05-28 22:01:46

标签: javascript

我开始研究Javascript和JQuery(因此我选择下面的例子)。我发现我可以定义一个函数并调用它(如预期的那样),但我也可以...... 做其他事情 ..这就是问题:

$scope.delivery_items[v.item_category_id]['items'].push(val);

我没有使用函数调用或只是在不调用函数的情况下声明'$'时出错。后者到底在做什么?如果它实际上没有调用函数,为什么它可以工作?

3 个答案:

答案 0 :(得分:10)

它什么都不做。它只是一个碰巧持有函数的变量。

它与以下同样无用的代码没有什么不同:

42;

答案 1 :(得分:3)

  

JavaScript对象是键和值之间的映射。钥匙是   字符串和值可以是任何东西。这使得物体自然适合   用于哈希映射。

     

函数是具有附加功能的常规对象   调用。

     

FROM https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#.22Normal.22_objects.2C_and_functions

这意味着您可以执行以下操作:

function test(){
   console.log(1);
}

var a = test;

a();

var test2 = function(){
  console.log(2);
}

或autocall

//sorry for the indentation.
(
  function(){
     console.log(3);
  }
)()

或创建结构

var testHash = {
   a : 1,
   b : function(){
      console.log(4);
   }
}

testHash.b();

testHash['b']();

创建难以调用的函数:

//in a browser environment
window['test3'] = function(){
   console.log(5);
} 

window['test space'] = function(){
   console.log(6);
} 

test3() //no error
test space() //error :D

编辑:用户想要了解有关自动调用功能的更多信息:

为什么这样做?

(
  function(){
     console.log(3);
  }
)()

通过两个步骤轻松完成:

括号,如果我们知道函数与其他变量一样,并且我们知道括号仅用于制作组或调用函数。

var test_1 = 'string example';
var length = (test_1).length; // the same that test_1.length

有道理:

var test_1 = 'string';
var test_2 = ' example';
var length = (test_1 + test_2).length; // the same that test_1.length

而不是:

var test_1 = 'string';
var test_2 = ' example';
var aux = test_1 + test_2;
var length = aux.length; // the same that test_1.length

现在,这对你有意义吗?:

var length = ('string example').length; // instead the first example

第二步,我们可以更改函数的字符串..并将其命名为

( function(){ ... } )()

为什么这很有趣? 那么,现在出现了封闭的概念。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

闭包是javascript中非常重要的工具。

答案 2 :(得分:1)

名称“$”只是该功能的持有者,通过“$”行,它只是列出代码的内容(在Google Chrome的开发者工具中)。

$()是调用函数。

$表示它持有什么。