js 两个小括号 ()() 的用法

合集下载

JS正则表达式中小括号的应用

JS正则表达式中小括号的应用

JS正则表达式中⼩括号的应⽤主要使⽤的有下⾯三种:1. (...)Grouping. Group items into a single unit that can be used with *, +, ?, |, and so on. Also remember the characters that match this group for use with later references.2. (?:...)Grouping only. Group items into a single unit, but do not remember the characters that match this group.3.(?=p) A positive lookahead assertion. 或(?!p) A negative lookahead assertion.⽤于测试的字符串:url(skins/default/images/index/default.png)红⾊字符为匹配上的结果第⼀种,⽤于普通分组,能记住匹配该分组的字符串,并且可以在以后通过\1的⽅式来引⽤所匹配到的分组eg: (\/)匹配url(skins/default/images/index/default.png)(\/)default\1匹配url(skins/default/images/index/default.png)第⼆种,⽤于分组,不记录匹配该分组的字符串eg: (?:\/)default匹配url(skins/default/images/index/default.png)第⼀、⼆两种⽅式匹配的结果⾥都包含有该分组匹配到的结果,在例⼦中是"/default"中的"/"第三种,只⽤于确定位置,最终结果⾥并不包含该括号匹配到的结果eg: (?!\/)default匹配url(skins/default/images/index/default.png)eg: default(?=\/)匹配url(skins/default/images/index/default.png)。

JS中的小括号,中括号,大括号

JS中的小括号,中括号,大括号

JS中的⼩括号,中括号,⼤括号
总的来说,JavaScript中⼩括号有五种语义,中括号有四种语义,⽽⼤括号也有四种语义。

⼩括号:
语义1,函数声明时参数表(形参)
语义2,和⼀些语句联合使⽤以达到某些限定作⽤(if、for等)
语义3,和new⼀起使⽤⽤来传值(实参)
语义4,作为函数或对象⽅法的调⽤运算符(如果定义了参数也可与语义3⼀样传实参)
语义5,强制表达式运算(常⽤有eval解析JSON和匿名函数⾃执⾏)
中括号:
语义1,声明数组
语义2,取数组成员
语义3,定义对象成员(可以不遵循标识符规则,可以以数字开头定义标识符)
语义4,取对象成员
⼤括号:
语义1,组织复合语句,这是最常见的
语义2,对象直接量声明(赋值对象)
语义3,声明函数或函数直接量赋值
语义4,结构化异常处理的语法符号(try...catch语句)
PS:(对于⼩括号语义5,强制表达式运算
1. function(){}() //匿名函数⽴即执⾏,语法分析期报错
2. {}.constructor //获取对象直接量的构造器,语法分析期报错
实际上是js的“语句优先”在作怪,即{}被理解成复合语句块⽽不是对象直接量或函数直接量的语义。

可使⽤众所周知的⽅法,加个强制运算符()转化为值即可。

3. 具体内容可参见/woshinia/article/details/18666223。

javascript小括号表达式

javascript小括号表达式

javascript⼩括号表达式javascript的⼩括号“()”表达式可以帮助我们把javascript语句组合分块并且每对⼩括号都会返回⼀个值且在同⼀语句中具有优先执⾏权。

例如:1 2 3 4var result, result2;result = 5 * (2 + 3); //这是⼀个表达式,分别进⾏了加法和乘法的运算,结果是25。

alert(result2); //result2等于undefined,声明变量时并未赋值。

下⾯的⼩括号表达式在此时并未执⾏,因为此时执⾏的alert操作是⼀个语句,下⾯的⼩括号表达式是另⼀语句,产⽣了两个语句,⼩括号只有在同⼀语句中才具有优先执⾏的权利。

(result2 = 6); //result2等于6。

javascript会先执⾏⼩括号内的运算,2+3=5并把5返回然后在执⾏⼩括号外的运算,也就是5*⼩括号返回的5,结果是25。

数学都学过,相信很容易理解。

⼩括号内不能声明变量并且不会改变括号内所执⾏语句的域。

例如:01 02 03 04 05 06 07 08 09 10 11 12function a() {(function_b() {});alert(_b); //程序会报错,_b并未声明}function b() {var_b;(_b = function() {});alert(_b); //结果是function () {}}a();b();alert(_b); //程序会报错,_b并未声明,上⾯b函数中的_b与此_b处不同的域。

⼩括号表达式可以执⾏多条语句,每条语句⽤逗号结束,会返回最后⼀条语句执⾏结果的返回值。

例如:1 2 3var a, b, c, result;result = (a = 1, b = 2, c = 3, a * (b + c)); //⼩括号内会依次执⾏a变量的赋值、b变量的赋值、c变量的赋值、b变量加c变量的结果乘以a变量的操作并把结果返回赋值给result变量。

javascript括号(小括号、中括号、大括号)的多义性。

javascript括号(小括号、中括号、大括号)的多义性。

声明:以下内容转自/thread-2463755-1-1.html,如需转载请注明出处。

小括号JavaScript中小括号有五种语义语义1,函数声明时参数表function func(arg1,arg2){// ...}语义2,和一些语句联合使用以达到某些限定作用// 和for in一起使用for(var a in obj){// ...}// 和if一起使用if(boo){//...}// 和while一起使用while(boo){// ...}// 和do while一起使用do{// ...}while(boo)注意:在与if、while及do while一起使用时小括号会将其中的表达式结果隐式的转换成布尔值。

见无处不在的隐式类型转换。

语义3,和new一起使用用来传值(实参)// 假设已经定义了类Person,它有两个字段姓名(name),年龄(age)var p1 =new Person('Jack',26);语义4,作为函数或对象方法的调用运算符(如果定义了参数也可与语义3一样传实参)// 假设已经定义了函数funcfunc();// 假设已经定义了对象obj,且拥有func方法obj.func();这里提下typeof运算符,有人喜欢这么使用请注意typeof后的小括号并非语义4(即不是函数调用),而是后面提到的语义5。

我使用typeof一般不加后面的小括号。

见具名函数的多种调用方式语义5,强制表达式运算function strToJson(str){ // eval 中字符串两旁加了强制运算符()var json = eval('(' + str + ')');return json;}关于语义5,大家最熟悉的莫过于使用eval解析JSON又如使用较多的是匿名函数自执行(function(){// ...})();注意,以上代码第1对小括号是语义5,第3对则是语义4。

js问号点操作符【?.??】(可选链双问号)

js问号点操作符【?.??】(可选链双问号)

js问号点操作符【?.??】(可选链双问号)配置使⽤可选链?. 和双问号?? 语法⼀、什么是可选链https:///en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining当访问多层对象属性(⽐如 res.data.list)时,如果属性res.data为空,则会报引⽤错误为此我们不得不这么处理:let dataList = res && res.data && res.data.list看着⾮常不美观,今天介绍的新语法就是为了解决这种问题的 (可选链操作符?.)有了可选链,就可以对⼀个为null或者undefined属性安全引⽤:let dataList = res?.data?.list⼆、什么是双问号https:///en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operatorvalue1 ?? value2??在value1和value2之间,只有当value1为null或者undefined时取value2,否则取value1(0,false,""被认为是有意义的,所以还是取value1)const obj = {}const c_or_d = obj.c ?? 'd'console.log(c_or_d) // 'd'console.log(0 ?? 1) // 0console.log("" ?? "foo") // ""如何使⽤⾸先检查你的项⽬依赖中的babel版本,如果你的babel版本<7,那么很遗憾,你得先解决babel版本升级的问题。

如果是babel7以上的版本,可以添加以下2个devDependencies依赖:@babel/plugin-proposal-optional-chaining // 可选链@babel/plugin-proposal-nullish-coalescing-operator // 双问号后在.babelrc或者babel.config.js中这加⼊2个插件(plugins属性放在JSON顶层):{"plugins": ["@babel/plugin-proposal-nullish-coalescing-operator","@babel/plugin-proposal-optional-chaining"]}之后就可以愉快地使⽤了!。

js正则匹配运算符

js正则匹配运算符

js正则匹配运算符在JavaScript中,正则表达式是一种强大的工具,可以用来匹配文本中的模式。

在编写正则表达式时,我们经常需要匹配一些特定的字符,比如运算符。

在这篇文章中,我们将讨论如何使用JavaScript的正则表达式来匹配运算符。

首先,让我们看一下JavaScript中常见的运算符。

这些包括加号(+)、减号(-)、乘号()、除号(/)、等号(=)等。

我们还可以考虑一些特殊的运算符,比如逻辑与(&&)、逻辑或(||)等。

现在,让我们来看一下如何使用正则表达式来匹配这些运算符。

在JavaScript中,我们可以使用正则表达式的字符类来匹配特定的字符。

例如,要匹配加号,我们可以使用正则表达式`/\+/`。

这里的反斜杠用来转义加号,因为加号在正则表达式中有特殊的含义。

如果我们想要匹配任何一个运算符,我们可以使用字符集合`[...]`。

例如,要匹配任何一个加减乘除运算符,我们可以使用正则表达式`/[-+/]/`。

这将匹配任何一个加号、减号、乘号或除号。

如果我们想要匹配特定的一组运算符,我们可以使用管道符号`|`。

例如,要匹配加号和减号,我们可以使用正则表达式`/[-+]/`。

除了匹配单个字符外,我们还可以使用量词来匹配多个字符。

例如,如果我们想要匹配连续的加号,我们可以使用正则表达式`/\++/`。

总之,JavaScript的正则表达式提供了强大的工具来匹配文本中的运算符。

通过使用字符类、字符集合和量词,我们可以轻松地编写出能够匹配各种运算符的正则表达式。

这对于处理和分析包含运算符的文本非常有用,比如编写计算器或解析数学表达式。

希望本文能够帮助你更好地理解JavaScript中的正则表达式匹配运算符的方法。

双重括号用法

双重括号用法

双重括号用法双重括号,又称双层括号,是一种特殊的语法标记,用于标记在某些语言和编程语言中变量的类型和函数的参数或返回值的类型。

双重括号的历史要追溯到20世纪50年代,当时,IBM在设计其第一台浮点处理器(FLP)时就使用了双重括号这一概念,在FLP的编程语言中,它的语法类似于C语言:它使用双重括号来标记变量和函数的类型,以便编译器能够正确地解析语句。

自FLP以来,双重括号就已经成为编程界的一个常见符号。

现今,双重括号得到了更为广泛的应用,它不仅可以用于标记变量和函数的类型,还可以用于标记对象的属性,以及模板语法中传递数据和运行指令。

例如,在JavaScript中,可以使用双重括号来访问对象的属性: var person = {naJohn”,age: 25};console.log(person.age); // 25console.log(); // John双重括号也可以用于创建模板语法,如此处的Python例子:name =John”print(“Hello {{name}}”)在模板语法中,双重括号内的值将会被替换为变量的值,以便生成最终的输出内容。

另外,双重括号还可以用于传递函数的参数,例如在JavaScript 中,可以使用双重括号为函数传递参数:function sayHello(name) {console.log(“Hello + name);}sayHello(“John”); // Hello John总而言之,双重括号在编程语言中有着广泛的应用,它可以用于标记变量和函数的类型,以及模板语法和函数参数传递。

它的语法与传统的括号有所不同,但是具有同样的重要性和地位。

此外,双重括号也可以用于标记对象的属性,这一概念也是非常重要的。

双重括号是一种特殊的符号,与传统的括号不同,它有着独特的功能和用途,可以帮助开发者更清晰准确地编程,从而节省时间和资源,提高编程效率。

javascript语法规则

javascript语法规则

javascript语法规则
JavaScript语法规则如下:
1. 变量声明:使用var、let、const关键字声明变量。

2. 标识符:使用字母、数字、下划线、美元符号组成,首字母不能是数字。

3. 语句与表达式:语句用于执行操作,表达式用于计算值。

语句以分号结束,表达式以值或变量结束。

4. 注释:双斜杠(//)表示单行注释,斜杠加星号(/*)与星
号加斜杠(*/)表示多行注释。

5. 数据类型:包括基本数据类型(Number、String、Boolean、Null、Undefined、Symbol)和复杂数据类型(Object)。

6. 操作符:用于计算值或操作数据,包括算术、比较、逻辑、赋值、位运算等操作符。

7. 函数:用于封装一些操作,为数据提供操作接口,函数可以接受参数并返回值。

8. 控制流程:包括条件语句(if、else、switch)、循环语句(for、while、do...while)、跳转语句(break、continue、return)。

9. 对象:JavaScript中的每个东西都是对象。

对象是由键值对
组成的,键是字符串类型,值可以是任意类型的数据。

对象可以扩展和修改。

10. 数组:数组是一种有序的列表,存储着一系列的值,每个
值都可以通过索引来访问。

11. Class:ES6新增了Class关键字,用于实现面向对象编程。

类定义了一组描述对象物理属性和方法的标准。

以上是JavaScript的一些基本语法规则,但实际上JavaScript 是一门灵活多变的语言,它有很多骚操作和技巧,需要不断的学习和实践才能写出优秀的代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

js 两个小括号 ()() 的用法.txt爱情是彩色气球,无论颜色如何严厉,经不起针尖轻轻一刺。

一流的爱人,既能让女人爱一辈子,又能一辈子爱一个女人!js 两个小括号 ()() 的用法
文章分类:Web前端
JavaScript 中,考查如下代码:
Js代码
(function()
{
alert("cftea");
})();
(function()
{
alert("cftea");
})();
其实这段代码的意思就是执行这个匿名函数,弹出提示框,内容为“cftea”。

可以把上述代码理解为:
Js代码
function foo()
{
alert(1);
}
foo();
function foo()
{
alert(1);
}
foo();
其实相同的功能还有另外两种写法,我们一并列出来如下:
Js代码
function foo()
{
alert("cftea");
}
foo();
(function()
{
alert("cftea");
})();
(function()
{
alert("cftea");
}());
void function()
{
alert("cftea");
}()
function foo()
{
alert("cftea");
}
foo();
(function()
{
alert("cftea");
})();
(function()
{
alert("cftea");
}());
void function()
{
alert("cftea");
}()
用途
说了这么多,这东西到底有什么用呢?它可以立即执行一段代码,并把结果赋给变量;打破我们常规的先写函数,再调用的流程,简化书写。

Js代码
ajax.xmlhttp = (...)();
ajax.xmlhttp = (...)();
例子:
Js代码
function Foo() {
var a = 123;
this.a = 456;
(function() {
alert(a); // 123
alert(this.a); // undefined
})();
}
var f = new Foo();
function Foo() {
var a = 123;
this.a = 456;
(function() {
alert(a); // 123
alert(this.a); // undefined
})();
}
var f = new Foo();
以上代码,先显示 123,再显示 undefined,说明 alert(this.a); 这句中 this 是指本function 的,而不是其外部 function 的。

如果要使用外部的成员,可使用参数的形式传入:
Js代码
function Foo() {
var a = 123;
this.a = 456;
(function(a) {
alert(a); // 456
})(this.a);
}
var f = new Foo();
function Foo() {
var a = 123;
this.a = 456;
(function(a) {
alert(a); // 456
})(this.a);
}
var f = new Foo();
很好理解,再看看下面的:
Js代码
function Foo() {
var a = 123;
this.a = 456;
(function() {
alert(a); // 123
alert(this.a); // undefined
this.b = 789;
})();
(function() {
alert(this.b); // 789
})();
}
var f = new Foo();
(function() {
alert(this.b); // 789
})();
同样是先显示 123,然后显示 undefined,然后显示 789,最后又是一个 789。

这说明用两个小括号括起来的都是位于一个执行上下文中的,不论这些代码放在哪里。

再看看:
function Foo() {
(function() {
this.b = 789;
})();
(function() {
alert(this.b); // 789
var b = 0;
alert(b); // 0
})();
}
var f = new Foo();
(function() {
alert(this.b); // 789
alert(b); // 789
})();
令人意外的是,最后一个 alert(b),结果仍然是 789。

更深入一步:
function Foo() {
(function() {
this.b = 789;
})();
(function() {
alert(this.b); // 789
alert(b); // undefined
var b = 0;
alert(b); // 0
})();
}
var f = new Foo();
(function() {
alert(this.b); // 789
alert(b); // 789
})();
function Foo() {
var a = 123;
this.a = 456;
(function() {
alert(a); // 123
alert(this.a); // undefined
this.b = 789;
})();
(function() {
alert(this.b); // 789
})();
}
var f = new Foo();
(function() {
alert(this.b); // 789
})();
同样是先显示 123,然后显示 undefined,然后显示 789,最后又是一个 789。

这说明用两
个小括号括起来的都是位于一个执行上下文中的,不论这些代码放在哪里。

再看看:
function Foo() {
(function() {
this.b = 789;
})();
(function() {
alert(this.b); // 789
var b = 0;
alert(b); // 0
})();
}
var f = new Foo();
(function() {
alert(this.b); // 789
alert(b); // 789
})();
令人意外的是,最后一个 alert(b),结果仍然是 789。

更深入一步:
function Foo() {
(function() {
this.b = 789;
})();
(function() {
alert(this.b); // 789
alert(b); // undefined
var b = 0;
alert(b); // 0
})();
}
var f = new Foo();
(function() {
alert(this.b); // 789
alert(b); // 789
})();
从上,我们可以看出,取值时、没有加 this 时:如果当前 () 中不存在同名的局部变量,则等同于加 this 处理;如果当前 () 中存在同名的局部变量,则按常规处理。

相关文档
最新文档