var card= cleanNum: function().... 这个 cleanNum: 是啥意思?

Posted

技术标签:

【中文标题】var card= cleanNum: function().... 这个 cleanNum: 是啥意思?【英文标题】:var card= cleanNum: function().... what does this cleanNum: mean?var card= cleanNum: function().... 这个 cleanNum: 是什么意思? 【发布时间】:2016-01-08 04:18:46 【问题描述】:

我想知道下面代码中的 cleanNum 是什么意思。是函数名还是代表什么?

//code snippet 1
var creditCard = 
  cleanNum : function(number)
    return number.replace(/[- ]/g,"");
  
;

第一季度。我不明白 cleanNum 的含义。你能解释一下cleanNum()的意义吗?

第二季度。如果我在另一个名为 another_func() 的函数中使用它,如何调用代码 sn-p 1?

下面的sn-p代码和上面一样吗?

//code snippet 2
function cleanNum(number)
  //sample code

【问题讨论】:

sn -p 1 中存在语法错误.. 你是这个意思吗?var creditCard = cleanNum : function(number) return number.replace(/[- ]/g,""); 是的。你说的对。我会编辑它 这将帮助您了解javascript命名空间javascriptweblog.wordpress.com/2010/12/07/… 【参考方案1】:

对我来说,代码实际上并没有编译这个错误:

Uncaught SyntaxError: Unexpected token :

我认为你的意图是

var cleanNum = function(number)
     return number.replace(/[- ]/g,"");

这类似于另一种方式,称为函数声明。不同之处在于加载代码的时间。当声明像 function cleanNum() ... 这样的函数时,该代码在任何代码执行之前加载,而表达式(见上面的代码块)在执行期间加载。如果您在加载之前尝试调用它,则会引发错误。

编辑

刚刚看到对您的代码块所做的编辑。当你这样做时:

var creditCard = 
     
        cleanNum : function(number) return number.replace(/[- ]/g,"");
            
    

您将 cleanNum 存储在 creditCard 对象下,要调用它,您必须使用

creditCard.cleanNum(param)

这和原来的不一样,因为之前你可以直接访问它

cleanNum(param)

【讨论】:

对不起。我在 Screen Cast 上看到了代码。我按照@KishoreSahas 在 cmets 中指出的问题对其进行了编辑。【参考方案2】:

我想知道下面代码中的 cleanNum 是什么意思。是函数名还是代表什么?

只是一个函数名

第一季度。我不明白 cleanNum 的含义。你能解释一下cleanNum()的意义吗?

cleanNum() 只是一个function 名称,位于namespace creditCard 之下。

第二季度。如果我在另一个名为 another_func() 的函数中使用它,如何调用代码 sn-p 1?

您可以通过creditCard.cleanNum(numbr)调用该函数

下面的sn-p代码和上面一样吗?

不是的

要了解更多javascript中的命名空间:click here

【讨论】:

【参考方案3】:

第一季度。我不明白 cleanNum 的含义。你能解释一下cleanNum()的意义吗?

cleanNum 是在对象元素中用匿名函数定义的函数名。该函数将通过删除其中的破折号(“-”)使number 变得干净。我猜这将是信用卡号码,所以它会输入类似于 1-2345-6789-01-2 的内容,然后只返回数字(没有破折号),在这种情况下将是 123456789012

第二季度。如果我在另一个名为 another_func() 的函数中使用它,如何调用代码 sn-p 1?

你可以调用它

creditCard.cleanNum(number);

希望对你有帮助,

【讨论】:

【参考方案4】:

您可以通过两种方式定义 cleanNum 函数:

1)function cleanNum(number)

这样,cleanNum 在代码执行开始之前就被加载到内存中。你可能不需要这个。

2)cleanNum=function(number)

这样每次调用cleanNum都会加载到内存中。

您还可以使用以下方式访问 cleanNum 函数:

creditCard.cleanNum(number)

【讨论】:

【参考方案5】:

第一件事:var x = 定义了一个新对象,在 中声明的每个变量都成为该对象的一个​​字段。

以下将创建一个带有字段编号的对象(由变量creditCard 引用)

var creditCard = 
  number: '3432-2342-34243'
;

至于Q1,cleanNum的意义在于它是对象creditCard的成员。只是不包含 int/string/date 等,而是包含 function

var creditCard = 
  cleanNum : function(number)
    return number.replace(/[- ]/g,"");
  
;

至于Q2,功能本身是一样的,只是作用域不同。直接定义时,可以直接访问,如果定义在对象内部,则只能通过该对象访问:

creditCard.cleanNum(somenumber);

更进一步,为了证明函数本身只是一个函数,您可以在 creditCard 之外定义该函数并在您的对象中重用该函数:

function cleanNumGlobal(number)
    return number.replace(/[- ]/g,"");
  

var creditCard =     
  cleanNum : cleanNumGlobal
;

//both call the same function:
console.log(cleanNumGlobal('2432-2423-234'));
console.log(creditCard.cleanNum('2432-2423-234'));

附带说明:通常这样的函数会使用对象本身的属性,因此它不会使用参数编号,而是使用对象本身的属性number(或在设置时清除编号该属性)。但这超出了问题范围;)

【讨论】:

以上是关于var card= cleanNum: function().... 这个 cleanNum: 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis框架中:Check syntax #{property|(expression), var1=value1, var2=value2, ...}

解决 ESLint 错误“no-unused-vars”

本博客背景特效源码

设置自定义扩展属性及展示布局

滚动到顶部时删除类

Python命名规范