JavaScript 中,考查如下代码:
- (function()
- {
- alert("cftea");
- })();
其实这段代码的意思就是执行这个匿名函数,弹出提示框,内容为“cftea”。
可以把上述代码理解为:
- function foo()
- {
- alert(1);
- }
- foo();
其实相同的功能还有另外两种写法,我们一并列出来如下:
- function foo()
- {
- alert("cftea");
- }
- foo();
- (function()
- {
- alert("cftea");
- })();
- (function()
- {
- alert("cftea");
- }());
- void function()
- {
- alert("cftea");
- }()
用途
说了这么多,这东西到底有什么用呢?它可以立即执行一段代码,并把结果赋给变量;打破我们常规的先写函数,再调用的流程,简化书写。
- ajax.xmlhttp = (...)();
例子:
- 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 的。如果要使用外部的成员,可使用参数的形式传入:
- 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() {
- 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 处理;如果当前 () 中存在同名的局部变量,则按常规处理。
相关推荐
这两个数组方法接收一个可迭代对象或类数组对象并转换成数组。例如,`Array.from('hello')`会返回字符数组,而`Array.of(1, 2, 3)`创建一个包含三个元素的数组。 总的来说,JavaScript中的小括号“()”在不同的上...
这个正则表达式的模式由两部分组成:`\(` 表示匹配左小括号,`\)` 表示匹配右小括号。`(.+?)` 是一个非贪婪捕获组,它会捕获从左括号到右括号之间尽可能少的任何字符(除了换行符)。`g` 是全局标志,表示匹配所有...
`replace()` 方法接受两个参数:第一个是正则表达式,第二个是要替换为的新内容。在这个例子中,我们没有提供新内容,所以匹配到的括号及其内容将被替换为空字符串,即删除它们。 `g` 是一个修饰符,表示全局匹配,...
在JavaScript编程语言中,小括号“()`”的多义性是其语法灵活性的一个关键特性。下面我们将详细探讨这五种不同的语义: 1. **函数声明时的参数列表**: 在JavaScript中,当你声明一个函数时,小括号用于包含函数的...
**功能说明**:捕获分组是最常见的小括号用法之一。它将一个或多个字符作为一个整体对待,并能够捕获这些字符以便后续使用。这种分组方式可以与量词(如`*`、`+`、`?`)、选择符(如`|`)等其他正则表达式元素结合...
在使用Visual Studio Code (VSCode) 这款强大的代码编辑器进行编程时,有时会遇到一些小困扰,比如在大括号中按下回车键不自动换行并缩进的问题。这个问题对于程序员来说,确实会影响编码的流畅度和效率。本文将详细...
本篇将详细介绍微信小程序中的Base64加解密以及相关的使用方法。 Base64是一种基于64个可打印字符来表示二进制数据的编码方式。这64个字符包括大小写字母、数字以及"+"和"/",最后还会用到一个等于号"="作为填充。...
总的来说,通过使用逗号运算符和花括号,我们可以有效地将多个JavaScript语句组合在一起,以提高代码的可读性和效率。然而,要注意,虽然这种技巧可以节省空间,但过度使用可能会降低代码的清晰度,因此在实际编程中...
但如果是两个或更多键值对,就需要使用小括号了: ```javascript var str = '{"name":"hanzichi","age":10}'; var obj = eval(str); // SyntaxError: Unexpected token ``` #### 四、注意事项 尽管`eval()`可以...
首先,replace()方法接收两个参数,第一个参数是一个正则表达式(可以是RegExp对象或字符串形式),用于指定要替换的子串;第二个参数是一个字符串或函数,用于定义替换的内容。使用正则表达式可以完成许多复杂的...
### 详解JS正则`replace`的用法 本文旨在深入解析JavaScript中正则表达式与`replace`方法的结合使用技巧。通过一系列基础知识的复习和实战案例的演示,帮助读者掌握这一强大的文本处理工具。 #### 一、正则表达式...
concat 方法 (String) 返回一个包含给定的两个字符串连接的String 对象。 条件(三元)运算符 (?:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函数。 continue 语句 停止循环的当前迭代...
JavaScript Unpacker 和 Beautifier 是两个在Web开发领域中用于处理JavaScript代码的工具。它们的主要目的是为了帮助开发者理解和优化复杂的JavaScript代码。 JavaScript Packer 是一个工具,它将源代码压缩成更小...
这两个方法是JSON处理的核心功能。 2. **json_parse_state.js**:此文件可能包含了一个JSON解析器的状态管理部分。在解析JSON字符串时,由于JSON语法有其特定规则,如键必须是字符串,值可以是多种类型等,因此解析...
- **脚本编写语言**:JavaScript是一种脚本语言,它采用小程序段的方式实现编程,其基本结构形式与C、C++、VB、Delphi等语言类似。然而,JavaScript与其他这些语言的不同之处在于它是解释型语言,在程序运行过程中被...
示例代码中定义了两个名为 `isSBCcase` 的函数,分别用于检测全角符号和中文字符。 #### 2.1 函数声明 函数使用 `function` 关键字进行声明,后面跟函数名和参数列表。 - `function isSBCcase(str) {...}`:定义了...
例如,两个数相加的表达式是: ```javascript let result = num1 + num2; ``` 为了实现连续运算,我们可能需要存储前一次的运算结果,并提供括号支持。这涉及到操作栈的概念,可以使用数组模拟栈来处理优先级问题...
JavaScript 数据类型知识点总结及基础类型的使用方法 JavaScript 中的数据类型是指在编程语言中对常用的各种数据类型进行明确的划分,以便让计算机正确的识别和处理不同的数据类型。在 JavaScript 中,常用的数据...