- 浏览: 1119477 次
文章分类
- 全部博客 (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 2649为什么使用 javascript 测试框架时,没有显式导入 d ... -
JavaScript之ECMAScript6新特性之_03_箭头函数(Arrow Function)
2018-01-25 13:46 1131一、简介 箭头函数(Arrow Function)是 ES6 ... -
JavaScript之ECMAScript6新特性之_02_线程异步阻塞: Promise, Async / await
2018-01-12 16:51 2337刚出来不久的 ES8 包含了 async 函数,它的出现,终于 ... -
JavaScript之ECMAScript6新特性之_01_开篇
2017-08-17 02:54 612点此查看全部: http://es6-features.org ... -
jQuery Versions - browser support
2017-08-12 04:19 1648jQuery 3.2.1 Support Deskto ... -
基于HTML5实现的中国象棋游戏
2017-06-24 02:24 1712HTML5实现中国象棋游戏 http://www.w2bc.c ... -
JavaScript之跨域请求解决方案
2017-06-07 11:03 4006浏览器处于安全原因,在使用 Ajax 进行请求访问时,不允许跨 ... -
JavaScript之 25 道面试题
2017-04-17 17:05 96525 Essential JavaScript Intervi ... -
JavaScript小应用之分页算法
2017-03-16 12:56 680效果图: function getPagina ... -
jQuery之empty() VS. remove()
2017-03-16 10:32 737jQuery empty() vs remove() Wh ... -
jQuery之 prop() VS. attr()
2017-03-14 16:43 667attr() 用于自定义属性,id ; prop() 用于 ... -
jQuery之mouseover,mouseover,mouseout,mouseleave
2017-03-14 10:20 667Jquery mouseenter() vs mouseove ... -
javascript之JS操作iframe
2017-02-28 14:56 2201JS操作iframe 1. 获得iframe的w ... -
javascript之面向对象编程之原型继承
2017-01-02 15:34 1166前文讲到“属性继承” ... -
HTML5之Cookie,localStorage 与 sessionStorage
2016-12-22 18:35 855详说 Cookie, LocalStorage 与 ... -
jquery之live(), delegate(), on() 方法
2016-11-26 23:48 942通过下面的一个实例理解 jQuery 的 live(), de ... -
javascript之小应用:网页在线聊天
2016-11-08 11:48 4355概览 这款使用 PHP 和 javascript 搭建的 ... -
javascript之编程序题目
2016-11-06 17:30 10621. 判断两个字符串是否:字母相同切长度相同(空格不算)。 ... -
javascript之面向对象编程之属性继承
2016-10-23 21:09 929函数继承可以分为两种:1、继承其 this 属性 2、继承其 ... -
javascript 之 undefined
2016-08-12 11:01 721一、用法 undefined 关键字有两种用法: 1. 如 ...
相关推荐
此外,函数表达式、立即调用的函数表达式(IIFE)以及函数原型也是函数相关的高级话题。 在JavaScript中,对象是一种复杂的数据结构,允许我们存储和操作键值对。理解对象的创建方式(字面量语法与构造函数)、属性...
理解函数表达式、匿名函数、函数作用域以及闭包等概念,能帮助开发者更好地组织和重用代码。此外,JavaScript还支持原型继承,这是其面向对象编程的一个独特特征。 JavaScript 2.0,也被称为ECMAScript 3(ES3),...
此外,还涉及了函数的使用,包括函数表达式、函数声明、匿名函数和箭头函数。 2. **函数式编程**:Crockford强调了JavaScript的函数是一等公民,可以作为参数传递,也可以作为返回值。书中解释了高阶函数的概念,如...
理解函数表达式、函数声明以及作用域(全局、局部、块级和闭包)对于编写可维护的代码至关重要。 3. **对象与原型**:JavaScript中的对象是属性和方法的集合,通过原型链实现继承。了解如何创建和操作对象,以及...
函数表达式(如匿名函数或命名函数表达式)和函数声明是两种不同的函数创建方式。函数声明在代码执行前被提升,而函数表达式不会。理解它们之间的差异可以防止一些意外的错误。 建议6:使用严格模式("use strict") ...
在Vue.js的编译过程中,有一段涉及`with`语句的代码,这是在生成渲染函数时使用的。`with`语句在JavaScript中是一个特殊的语法结构,它允许我们将一个对象的作用域设置为当前执行上下文,从而简化对对象属性的访问。...
3. **函数与闭包**:阐述函数作为一等公民的概念,函数表达式、函数作用域、闭包的原理及其在内存管理中的应用。 4. **异步编程**:讲解事件循环、回调函数、Promise、async/await等处理异步操作的方法,帮助开发者...
- “Functions are fundamental”部分可能深入探讨了函数在JavaScript中的核心地位,包括函数声明、函数表达式、立即执行函数表达式(IFEE)等。 - “Wielding functions”可能包含高阶函数(Higher-order functions...
接着,会讲解函数的使用,包括函数声明、函数表达式、参数和作用域。 面向对象编程在JavaScript中占据重要地位,因此手册会深入讨论对象和原型链。这包括对象的创建方式(字面量语法和构造函数)、原型和继承、以及...
JavaScript中的函数有函数表达式(如匿名函数和箭头函数)和函数声明。函数作用域决定了变量的可见性,包括全局作用域和局部作用域。ES6引入了块级作用域,通过let和const关键字实现。 3. **原型与继承**:...
JavaScript还支持匿名函数和箭头函数,提供函数表达式和函数声明两种定义方式。 4. 对象与原型:JavaScript采用基于原型的对象模型,对象可以通过构造函数创建,通过原型链实现属性和方法的继承。 二、JavaScript...
函数章节讲解了函数的声明、作用域、参数处理、闭包以及立即调用的函数表达式(IIFE)。理解函数的作用域对于编写可靠的代码至关重要。 在运算符章节中,我们学习了JavaScript支持的各类运算符,包括算术运算符、...
JavaScript支持函数表达式和函数声明。 2. **JavaScript对象** - 对象是JavaScript的核心特性,用于组织和存储数据。它们由键值对组成,可以通过点号或方括号访问属性。 - 构造函数与原型:通过构造函数可以创建...
TypeScript支持JavaScript中的所有类型的函数,包括声明函数、匿名函数和箭头函数。此外,TypeScript还支持函数的重载和可选参数。 9. 模块 TypeScript支持模块化编程,可以将代码分割成小的、可重用的模块。每个...
函数声明和函数表达式是两种定义函数的方式,函数表达式必须先赋值后调用,否则会出现`TypeError`。`for...in`语句用于遍历对象的属性,但属性的遍历顺序是不确定的。在JavaScript中,需要注意这些特性以避免潜在的...
5. 函数优化:减少函数嵌套,使用函数表达式代替函数声明以延迟加载。考虑使用尾调用优化,如果函数最后一步是调用自身或其他函数,可以考虑转换为尾调用形式。 6. 利用事件委托:将事件监听器添加到父元素上,通过...
- 函数表达式和函数声明的区别,理解IIFE(立即调用的函数表达式)的作用。 7. **优化循环和条件判断**: - 避免在循环条件中使用复杂的表达式,将计算提前到循环外部。 - 使用短路运算符`&&`和`||`进行条件判断...
JavaScript函数可以使用函数表达式或函数声明两种方式定义。函数表达式通常赋值给一个变量,而函数声明则直接声明函数名。 #### 对象 JavaScript中的对象是一种容器,可以存储键值对。对象可以使用字面量方式创建...
函数表达式和函数声明是两种不同的定义方式,理解它们的差异很重要。 5. 对象和类:JavaScript的对象是键值对的集合,可以通过字面量语法或构造函数创建。ES6引入了类的概念,但实质上仍然基于原型继承。理解原型链...
16. **函数声明与函数表达式的区别:** 函数声明与函数表达式在解析上有所不同。函数声明会被提升,而函数表达式则在代码执行到该行时才被解析。 17. **作用域、上下文与this关键字:** this关键字引用函数的执行上...