- 浏览: 1091100 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
示例一、
<html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript"> var obj = {value:2000}; var value = 100; with(obj){ function foo(){//函数声明 value *= 2; } foo(); } console.log(value); //200 console.log(obj.value); //2000 </script> </head> <body> </body> </html>
示例二、
<html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript"> var obj = {value:2000}; var value = 100; with(obj){ var foo = function(){//函数表达式 value *= 2; } foo(); } console.log(value); //100 console.log(obj.value); //4000 </script> </head> <body> </body> </html>
【函数声明】与【函数表达式】
这个问题比较复杂,在ES5中定义了词法环境和变量环境。
当有with时,会创建新的词法环境,函数声明会取自变量环境,函数表达式会取自词法环境。
另外,函数声明不应该放在with里,虽然浏览器实现上不会报错,但从标准的角度,块中不应该包含函数声明。
你可以把函数声明换成函数表达式再看看。
不一定是with,try/catch和with在作用域的处理上十分类似。
这是【函数声明】和【函数表达式】区别的一个经典例子。
也是ECMA-262 5中区分词法环境(Lexical Enviaronment)和变量环境(Variable Environment)的主要原因。
一般很少遇到过。with确实不建议使用,只是例中的问题除了with, 在try/catch语句中也会有类似的问题。
catch(obj) {
function(....
}
-
发表评论
-
Javascript 测试框架之 隐式声明 之 describe
2019-06-25 15:26 2446为什么使用 javascript 测试框架时,没有显式导入 d ... -
JavaScript之ECMAScript6新特性之_03_箭头函数(Arrow Function)
2018-01-25 13:46 1049一、简介 箭头函数(Arrow Function)是 ES6 ... -
JavaScript之ECMAScript6新特性之_02_线程异步阻塞: Promise, Async / await
2018-01-12 16:51 2250刚出来不久的 ES8 包含了 async 函数,它的出现,终于 ... -
JavaScript之ECMAScript6新特性之_01_开篇
2017-08-17 02:54 557点此查看全部: http://es6-features.org ... -
jQuery Versions - browser support
2017-08-12 04:19 1548jQuery 3.2.1 Support Deskto ... -
基于HTML5实现的中国象棋游戏
2017-06-24 02:24 1620HTML5实现中国象棋游戏 http://www.w2bc.c ... -
JavaScript之跨域请求解决方案
2017-06-07 11:03 3894浏览器处于安全原因,在使用 Ajax 进行请求访问时,不允许跨 ... -
JavaScript之 25 道面试题
2017-04-17 17:05 90825 Essential JavaScript Intervi ... -
JavaScript小应用之分页算法
2017-03-16 12:56 628效果图: function getPagina ... -
jQuery之empty() VS. remove()
2017-03-16 10:32 684jQuery empty() vs remove() Wh ... -
jQuery之 prop() VS. attr()
2017-03-14 16:43 623attr() 用于自定义属性,id ; prop() 用于 ... -
jQuery之mouseover,mouseover,mouseout,mouseleave
2017-03-14 10:20 618Jquery mouseenter() vs mouseove ... -
javascript之JS操作iframe
2017-02-28 14:56 2132JS操作iframe 1. 获得iframe的w ... -
javascript之面向对象编程之原型继承
2017-01-02 15:34 1041前文讲到“属性继承” ... -
HTML5之Cookie,localStorage 与 sessionStorage
2016-12-22 18:35 805详说 Cookie, LocalStorage 与 ... -
jquery之live(), delegate(), on() 方法
2016-11-26 23:48 880通过下面的一个实例理解 jQuery 的 live(), de ... -
javascript之小应用:网页在线聊天
2016-11-08 11:48 4209概览 这款使用 PHP 和 javascript 搭建的 ... -
javascript之编程序题目
2016-11-06 17:30 9991. 判断两个字符串是否:字母相同切长度相同(空格不算)。 ... -
javascript之面向对象编程之属性继承
2016-10-23 21:09 830函数继承可以分为两种:1、继承其 this 属性 2、继承其 ... -
javascript 之 undefined
2016-08-12 11:01 653一、用法 undefined 关键字有两种用法: 1. 如 ...
相关推荐
7.1.1 函数声明和调用 7.1.2 返回值 7.1.3 匿名函数变量 7.1.4 闭包 7.1.5 递归 7.1.6 函数是对象 7.2 调试技巧 7.2.1 函数语法 7.2.2 使用try/catch和throw捕捉异常 ...
1.30 取整数函数的使用(ceil()与floor()) 28 1.31 平方根函数的使用(sqrt()) 29 1.32 取得两个数中的最大数(max())或 最小数(min()) 30 1.33 随机函数(random()) 31 1.34 圆形面积计算... 32 1.35 矩形面积...
:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函数。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个数的余弦。 Date 对象 提供日期和时间的基本存储和检索。...
6.2.4 使用with声明简化表达式 6.2.5 常见属性汇总 6.2.6 常见方法汇总 6.3 Array对象 6.3.1 创建数组并访问其特定位置元素 6.3.2 数组中元素的顺序问题 6.3.3 模拟堆栈和队列操作的方法 6.3.4 使用splice()方法添加...
4.2 函数声明 4.3 函数调用间隔 4.4 立即调用的函数 4.5 严格模式 4.6 相等 4.6.1 eval() 4.6.2 原始包装类型 第二部分 编程实践 第5章 UI层的松耦合 5.1 什么是松耦合 5.2 将JavaScript从CSS中抽离 5.3...
:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函数。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个数的余弦。 Date 对象 提供日期和时间的基本存储和检索。...
6.2.4 使用with声明简化表达式 6.2.5 常见属性汇总 6.2.6 常见方法汇总 6.3 Array对象 6.3.1 创建数组并访问其特定位置元素 6.3.2 数组中元素的顺序问题 6.3.3 模拟堆栈和队列操作的方法 6.3.4 使用splice()方法添加...
4.2 函数声明 4.3 函数调用间隔 4.4 立即调用的函数 4.5 严格模式 4.6 相等 4.6.1 eval() 4.6.2 原始包装类型 第二部分 编程实践 第5章 UI层的松耦合 5.1 什么是松耦合 5.2 将JavaScript从CSS中抽离 5.3...
:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函数。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个数的余弦。 Date 对象 提供日期和时间的基本存储和检索。...
该库使用它来支持使用函数和正则表达式来声明JSON API。 您应该携带自己喜欢的测试库。 安装 npm install match-json 用法 匹配JSON基元。 // Numbers match ( 3.1415 , 3.1415 ) ; // => true //Strings match ( ...
与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const...
7.4.2函数表达式 60 7.4.3对象的方法 60 7.4.4bind方法创建的函数 60 7.4.5newFunction创建的函数 60 7.4.6实例 61 7.5new.target属性 61 7.6在参数中使用尾后逗号 62 7.7箭头函数 62 7.7.1基本语法 62 [2] 7.7.2...
第 1 章 JavaScript 是什么...............................................1 3 1.1 历史简述..............................................1 1.2 JavaScript 实现................................................
逻辑与:&& 逻辑或:|| 逻辑非:! 逻辑运算符只能作用于布尔值,否则将产生错误 1.9 内建函数 FreeMarker还提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可以通过内建函数来轮换输出...
ExtAspNet - ExtJS based ASP.NET Controls with Full AJAX Support ExtAspNet是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果, 目标是创建没有ViewState,没有JavaScript,没有CSS,没有...