通过测试及debug后, 得出结论, 仅代表个人意见:
with的本质, 就是构造一个作用域, 将with的对象的所有key, 声明为局部变量
var inner = '123';
var outer = {inner : 'hello world', another: 'hello with'};
window.obj = {outer: outer};
with(outer) {
alert(inner);
alert(another);
alert(outer.inner);
alert(window.obj.outer.inner);
show();
}
function show() {
alert(inner);
}
等同于以下代码
var inner = '123';
var outer = {inner : 'hello world', another: 'hello with'};
window.obj = {outer: outer};
(function(inner, another) {
alert(inner);
alert(another);
alert(outer.inner);
alert(window.obj.outer.inner);
show();
})(outer.inner, outer.another);
function show() {
alert(inner);
}
再看看下面这个常见的问题, 一目了然
var root = {
branch: {
node: 1
}
};
with(root.branch) {
root.branch = {
node: 0
};
// 显示 1, 错误!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);
分享到:
相关推荐
- **易于表示连接数据**: 由于其图形数据模型的本质,表示高度连接的数据极为自然。 - **快速检索连接数据**: 对于关联数据的检索和遍历非常迅速。 - **表示半结构化数据**: 半结构化数据的表示也十分便捷。 - **...
本文主要探讨了while和for循环、switch语句、for-in语句、with语句以及label语句。 1. while和for循环: while和for是两种基本的循环控制结构。在JavaScript中,两者都能实现重复执行某段代码直到满足特定条件为止...
#### 2.1 编程语言的本质 - **解释**:阐述了编程语言的基本原理及其在软件开发中的作用。 - **重点**:理解编程语言的结构和语法规则对于编写高效代码至关重要。 #### 2.2 编程风格 - **概念**:介绍了良好的编程...
这是初学者经常犯的错误,因为这两个运算符在视觉上非常相似,但在逻辑上却有本质的区别。赋值运算符用于给变量赋值,而比较运算符用于比较两个变量的值是否相等。 此外,书中还涉及了控制结构,比如switch语句和...
本文将深入探讨JavaScript对象的使用,包括对象操作的语句、with语句、this关键字、New运算符以及对象属性和方法的引用。 1. For...in 语句: For...in语句用于遍历对象的所有可枚举属性,而无需预先知道属性的...
在标题《Functional Programming With C# 7.1》和描述中,我们可以提取到几个关键的知识点。首先,标题提到了“C#函数式编程”,而描述中提及了“C# 7.1”版本,这意味着文档主要聚焦在C#语言的函数式编程特性,并且...
它们通常出现在条件语句、循环结构、函数调用以及数据流控制中。例如,一个逻辑漏洞可能允许攻击者绕过安全检查,或者使程序执行非授权的操作。在分析代码时,我们需要特别关注那些可能导致程序行为异常的条件分支。...
8. 变化的本质:"I really wonder why people suddenly change after they get what they wanted." 这句话反映了人们在欲望满足后心态变化的普遍现象,提示我们在人际关系中保持警惕。 9. 情感选择:"Men always ...
值得注意的是,一元正运算符对值没有实质影响,更多是出于语法对称性的考虑。 - **二元运算符**:涉及两个操作数,常见的有算术运算符(如加法 +、减法 -、乘法 *、除法 / 和取模 %)。这些运算符要求对结果进行...
这两种方法本质上是等效的,都会将数据写入指定的文件。需要注意的是,文件路径应为绝对路径,且文件扩展名通常设置为`.xls`或`.xlsx`,以便Excel能正确识别。 然而,在实际操作中,可能会遇到一些问题。例如,在...
2. **直接使用VHDL语句进行行为描述**:适合S盒设计的VHDL语句主要有with-select语句和case语句。使用with-select语句可以直接进行替换的行为描述,无需额外整理;而使用双重case语句嵌套,外层对应S盒的第一位和第...
3. 控制结构:如条件语句(if...else)、循环(for、while、do...while)、switch语句以及break和continue语句,这些都是编写逻辑流程的关键部分。 4. 函数:JavaScript中的函数是第一类对象,可以作为变量赋值、...
了解V8引擎的工作原理可以帮助开发者写出更快的JavaScript代码,例如避免使用with语句,减少全局变量的使用,以及优化循环结构等。 总的来说,"JavaScript参考chm"涵盖了JavaScript的核心概念、语法、API和最佳实践...
3. 忍者训练(NINJA TRAINING):这部分内容可能是对高级主题的探讨,如运行时代码执行(runtime code evaluation)、使用with语句,开发跨浏览器策略,以及对线程和定时器的控制等。 针对第二部分的内容,我们可以...
通常使用`try-with-resources`语句块确保资源被正确关闭。 8.事务处理: JDBC支持事务管理,通过`Connection`对象的`setAutoCommit()`方法可以关闭自动提交,然后手动调用`commit()`或`rollback()`来控制事务的...
异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使用空的引用、数组下标越界、内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图。 异常分类 Java 所有的异常都是从 Throwable 继承而来的...
- **循环语句**:讲解while、repeat with语句以及repeat循环与exitFrame循环的区别。 **第四章、事件、消息与脚本** - **脚本的种类**:区分不同类型的脚本。 - **事件与消息传递**:阐述事件触发后消息的生成、...
虽然Props和State都是React组件的核心概念,但它们之间有着本质的区别。Props是只读的输入参数,由外部传入;而State则是组件内部状态的表示形式,可以被组件自身修改。正确区分这两者对于构建复杂的应用程序至关...
这些数据库允许在SQL语句中直接对子查询进行递归调用,符合递归的本质。 然而,在MySQL中,由于不支持CTE,实现递归查询需要转换思路。可以通过将递归转换为迭代的方式,即使用循环和条件控制来替代递归。在递归...