从泛滥到闭包 ,有很多JavaScript术语(在字段中使用的特殊单词)知道,这不仅可以帮助您增加词汇量,而且可以更好地理解JavaScript。 行话通常可以在文档和技术文章中找到 。 但是其中一些像闭包是相当标准的知识。 知道单词本身的含义可以帮助您更好地了解该单词的名称。
这篇文章是10个此类术语及其含义和在JavaScript 中使用的上下文的汇编。 如果您是初学者,那么此列表将使您了解起重之类的基础知识。 同时,其中还包含一些鲜为人知或理解较少的术语。
- 阿里特
- 匿名
- 关闭
- 咖喱
- 吊装
- 突变
- 语用
- 哨兵
- 香草
- 可变的
Arity (来自拉丁语)是一个术语,用于分别引用函数或操作中的参数或操作数。 当提到JavaScript函数期望的参数数量时,您很可能在JavaScript领域遇到这个词。
Function
对象甚至有一个名为arity的属性,该属性返回Function
中期望的参数数量。 现在,它已过时,但已被length
替换。
以下函数的arity为3。
function getName(first, middle, last){
return first+' '+ middle +' '+last;
}
匿名是一个形容词。 当某事物或某人被称为匿名时,意味着该事物或某人的名字是未知的。 同样,在JavaScript中,匿名函数是没有名称标识的函数。
(function (){
//body
})();
上面是IIFE (立即调用函数表达式)。 其中的函数是匿名的,因为它没有名称。 现在,看看下面的那个。
var foo = function() {
};
这也被称为匿名函数,因为关键字function
之后没有名称。
使用“匿名”一词的正确性引起了一些疑问。 使用IIFE,该函数将立即调用,不涉及任何名称,而要调用后一个函数,则使用语法foo()
。
就像我们将无名函数命名为“ foo”,然后使用它命名。 那算不算匿名? 我不知道,我将留给英语专家。 但是,除了我的困惑外,它们确实都被称为匿名函数。
这是牛津词典中用于闭合的定义之一:“ 一种闭合或密封物体的东西,例如帽子或领带 。”
在JavaScript中,闭包是一个内部函数,可以在其外部函数范围之外进行访问,并且其与外部函数变量的连接仍保持不变。
为了说明事情(可能不够准确,但很简单),可以考虑在餐厅当服务员来关闭餐厅。 饭店厨房内部发生很多事情,我们不允许进入或参观厨房。 但是我们应该如何获得食物呢?
那是服务员进来的地方。我们打电话给他们,点菜,然后他们去厨房,将订单通知厨师,并在准备好订单时带给我们。 这样,我们没有打破任何“规则”,仍然可以设法用餐。
服务员是一个可以将我们的订单带到厨房并随食物一起返回的人。 JavaScript 闭包与此类似,它们能够获取我们的参数,并从不允许使用的函数内部带回我们的变量 (准确地说是对这些变量的引用)。
function order() {
var food;
function waiter(order) {
chef(order);
return food;
}
function chef(order) {
if (order === 'pasta') {
food = ['pasta', 'gravy', 'seasoning'];
cook();
}
}
function cook() { food.push('cooked'); }
return waiter;
}
var myOrder = order();
console.log(myOrder('pasta'));
// Array [ "pasta", "gravy", "seasoning", "cooked" ]
从上面的代码中可以看到,除了waiter
及其从order函数内部返回的值之外的所有东西都没有暴露给外界。
以Haskell Curry命名的效果是指使用具有单个参数的多个函数来代替具有多个参数的单个函数。 让我们来看下面的add
函数。
function addx(x){
function addy(y){
return x+y;
}
return addy
}
function add(x,y){
return(x+y);
}
console.log(addx(3)(4)); \\7
console.log(add(3,4)); \\7
这两个函数返回相同的结果。 函数addx
在返回addy
接受参数x
,然后又返回y
值,用x
执行加法并返回总和。
函数add
简单地同时取x
和y
,执行加法并返回总和。 到目前为止,第一个功能似乎不太有用,直到…
var add4 = addx(4);
console.log(add4(8)); //12
console.log(add4(6)); //10
console.log(add4(-74)); //-70
现在,以前的功能突然变得很有趣。 在currying中,您始终可以固定一系列操作的步骤,例如从上述代码中加4,这在操作中使用的变量之一始终相同时非常有用。
提升机意味着举起东西。 用JavaScript进行吊装也意味着相同,并且引发的是声明(变量和函数声明)。
声明是使用关键字var
(不适用于global)和function
创建变量和函数的地方。
不管在哪里键入代码来声明函数或变量,在评估期间,所有声明都将在它们所驻留的范围内上移(严格模式除外)。 因此,可以使用在函数声明之前放置的函数调用代码来编写工作代码。
var name = 'Velma';
console.log(sayCatchPhrase(name)); //"Jinkies!"
function sayCatchPhrase(name) {
phrases = {
'Fred Flintstone': 'Yabba dabba doo!',
'Velma': 'Jinkies!',
'Razor': 'Bingo!',
'He-Man': 'I Have the Power'
};
return phrases[name];
}
变异是指更改或修改。 如果您遇到过JavaScript中的变体一词,则可能是指DOM元素经历的更改。
甚至有一个名为MutationObserver的API可以监视DOM突变,例如添加子元素或更改元素的属性 。 (您可以在我的文章中阅读有关MutationObserver的更多信息。)
附注是短期的实用信息。 用朴素的英语来说,语用是形容词,既有意义又实用。 在编程中, 编译指示是指由有关编译器,解释器或汇编器应如何处理程序的有用信息组成的代码。
它对编程语言本身没有任何贡献,并且其语法可能会有所不同。 它们仅影响编译器行为。 JavaScript也没有几个实用工具 ,其中之一很strict
。
"use strict";
通过以上编译指示,将以严格模式执行JavaScript代码。 在严格模式下,不允许使用错误的语法,不执行提升操作,显示无提示错误等。它有助于编写更安全和优化JavaScript代码 。
哨兵是守卫的士兵(还记得X战警的士兵吗?)。 在编程中, 前哨是用于指示循环或过程结束的值。 它们也可以称为“标志”。
您可以使用任何合理的值作为标记 。 这是JavaScript中使用的哨兵示例; indexOf
方法,当在目标字符串中找不到搜索值时,该方法返回-1(前哨值)。 下面是一个返回数组值位置的函数,如果找不到值,则返回-1。
function getPos(ary, val) {
var i=0, len=ary.length;
for(;i<len;i++){
if(ary[i]===val) return i+1;
}
return -1;
}
console.log(getPos(['r','y','w'],'y')); //2
console.log(getPos(['r','y','w'],'g')); //-1
我认为每个人的第一个冰淇淋口味都一定是香草味。 我还认为,不仅在冰淇淋,但在几乎每一个甜蜜的香草菜种成了标准的味道。 我已经看到了很多蛋糕食谱,他们在其中添加了至少一滴蛋糕-只是为了增加风味。
这就是香草 , 传统的标准口味 。 Vanilla JavaScript被称为标准JavaScript –无框架。 实际上,Vanilla不仅用于描述JavaScript的标准版本,而且还用于描述CSS之类的其他语言。
可变参数是通过结合“变量”和“亲近性”而创建的形容词。 “ Adicity”来自古希腊语,含义与拉丁词“ arity”相同(此列表中的第1项)。 因此,术语variadic用于表示参数数量可变的事物 。
在JavaScript中, 可变参数函数接受任意数量的参数。 可以使用arguments
属性, apply
方法以及ES6(即散布运算符)创建它。 下面是使用扩展运算符的示例。
function test(...a){
console.log(a);
}
test('a','b','c',8,[56,-89]);
//output is Array [ "a", "b", "c", 8, Array[2] ]