作用域

13-Java-JSP知识梳理

回眸只為那壹抹淺笑 提交于 2020-02-22 04:54:21
一、JSP了解        JSP(java server pages,服务器页面),可理解为HTML+ Java = = JSP,它可生成动态的HTML(拼标签)。是以.jsp为后缀的文件,     内容是以标签为主体,可以内联java代码,本质上是servlet。 二、JSP文件创建    第一步: 创建一个web项目,步骤见 : https://www.cnblogs.com/qinqin-me/p/12256095.html    第二步: 在项目文件夹下的webRoot下创建.jsp结尾的文件    第三步: jsp文件的默认编码为:ISO-8859-1,需修改为utf-8 ,步骤如下:         点击Window->点击Preference->在搜索框中输入jsp->找到 JSP 并点击->在右侧的Encoding下拉框中向上翻选中UTF-8 三、JSP引擎    大概了解       JSP引擎和JSP容器指的同一样东西,他们都指用来统一管理和允许Web应用程序的软件,常见的JSP引擎有Tomcat、JRun等,最常用的就是Tomcat。    安装JSP引擎的计算机,其实就是Web服务器。当浏览器要访问一个JSP文件时,JSP文件会经过JSP引擎转换为一个Servlet,被编译成class,然后通过class    生成的的对象给用户进行响应。   

JavaScript严格模式

天涯浪子 提交于 2020-02-22 00:44:20
一、使用严格模式的作用 1、消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; 2、消除代码运行的一些不安全之处,保证代码运行的安全; 3、提高编译器效率,增加运行速度; 4、为未来新版本的Javascript做好铺垫。 二、使用严格模式 进入"严格模式"的标志,是下面这行语句:   "use strict";   老版本的浏览器会把它当做一行普通字符串,加以忽略。 使用全局模式需要注意的地方 1、严格模式中,全局变量必须显式声明。 2、Javascript语言的一个特点,就是允许"动态绑定",即某些属性和方法到底属于哪一个对象,不是在编译时确定的,而是在运行时(runtime)确定的。严格模式对动态绑定做了一些限制。某些情况下,只允许静态绑定。也就是说,属性和方法到底归属哪个对象,在编译阶段就确定。这样做有利于编译效率的提高,也使得代码更容易阅读,更少出现意外。 具体涉及以下几方面: (1)禁止使用with语句 因为with语句无法再编译时就确定,属性到底归属那个对象。  "use strict";   var v = 1;   with (o){ // 语法错误     v = 2;   }   (2)创设eval作用域   正常模式下,Javascript语言有两种变量作用域(scope):全局作用域和函数作用域。严格模式创设了第三种作用域

Javascript 严格模式详解

人走茶凉 提交于 2020-02-20 17:00:07
一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式: "严格模式" (strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;   - 消除代码运行的一些不安全之处,保证代码运行的安全;   - 提高编译器效率,增加运行速度;   - 为未来新版本的Javascript做好铺垫。 "严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经 支持 它,许多大项目已经开始全面拥抱它。 另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。 本文将对"严格模式"做详细介绍。 二、进入标志 进入"严格模式"的标志,是下面这行语句: "use strict"; 老版本的浏览器会把它当作一行普通字符串,加以忽略。 三、如何调用 "严格模式"有两种调用方法,适用于不同的场合。 3.1 针对整个脚本文件 将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。如果这行语句不在第一行,则无效

JS中 undefined重写 与 void 0

戏子无情 提交于 2020-02-20 11:42:29
在看一些开源源码的时候经常会看到这样一个判断句: if( xxx !== void 0 ) {} 这里的目的是判断指定的变量是不是一个 undefined 之所以这么写,是因为,在ES5之前,undefined 是可以被重写的,在ES5之后修复了这个问题,但只是全局作用域下不可以了,在局部作用域内依然可以改写,比如: (function() { var undefined = 10; console.log(undefined); // 10 console.log(typeof undefined) // number })() void 后面不管跟的什么,返回的都是 undefined 来源: https://www.cnblogs.com/xwant/p/8985502.html

大型程序的工具——命名空间

馋奶兔 提交于 2020-02-20 05:42:38
一、命名空间   命名空间为防止名字冲突提供了更加可控的机制。命名空间分割了全局命名空间,其中每个命名空间是一个作用域 1、命名空间定义   一个命名空间的定义包含两部分:首先是关键字namespace,随后是命名空间的名字。在命名空间名字后面是一系列由花括号括起来的声明和定义。 1 #include <iostream> 2 #include <string> 3 4 namespace QAQ { 5 int x = 100; 6 } 7 int main() 8 { 9 std::cout << QAQ::x << std::endl; 10 return 0; 11 } View Code   命名空间的名字必须在定义它的作用域内保持唯一。 命名空间既可以定义在全局作用域内,也可以定义在其他命名空间中,但是不能定义在函数或类的内部 。 1)每个命名空间都是一个作用域   命名空间的每个名字都必须表示该空间内的唯一实体。因为不同命名空间的作用域不同,所以在不同命名空间内可以有相同名字的成员。   定义在某个命名空间中的名字可以被该命名空间内的其他成员直接访问,也可以被这些成员内嵌作用域中的任何单位访问。位于该命名空间之外的代码则必须指出所用的名字属于哪个命名空间。 2)命名空间可以是不连续的   命名空间可以定义在几个不同的部分。 1 #include <iostream>

变量的作用域

有些话、适合烂在心里 提交于 2020-02-20 03:04:22
No.1 <script language="javascript"> var var00 = 0; document.write(var00 + '<br>'); var var01 = 1; function foo() { document.write(var01); var var01 = 1; } foo(); </script> 结果: 0 undefined No.2 <script language="javascript"> var00 = 0; document.write(var00 + '<br>'); var01 = 1; function foo() { document.write(var01); var01 = 1; } foo(); </script> 结果: 0 1 No.3 <script language="javascript"> var00 = 0; document.write(var00 + '<br>'); var01 = 1; function foo() { document.write(var01); var var01 = 1; } foo(); </script> 结果: 0 undefined 原来JavaScript的变量也是有作用域的,只是它非常的笼统,就分为全局变量和函数变量。在第二个例子中得到0和1

160622、详解JavaScript变量提升

北慕城南 提交于 2020-02-20 01:45:47
变量在程序中随处可见。它们是一些始终在相互影响,相互作用的的数据和逻辑。正是这些互动使应用程序活了起来。 在JavaScript中使用变量很重要的一方面就是变量的提升 —— 它决定了一个变量何时可以被你的代码使用。如果你在寻找关于这方面的详细介绍,那你算是来对地方了。让我们一起看看吧。 1. 简介 提升 是一种将变量和函数的声明移到函数作用域(如果不在任何函数内的话就是全局作用域)最顶部的机制。 提升影响了变量的生命周期,一个变量的生命周期包含3个阶段: 声明 - 创建一个新变量,例如 var myValue 初始化 - 用一个值初始化变量 例如 myValue = 150 使用 - 使用变量的值 例如 alert(myValue) 这个过程通常是像这样执行的:首先 声明 一个变量,然后用一个值给它 初始化 ,最后就是 使用 它。让我们看一个例子: // 声明 var strNumber ; // 初始化 strNumber = '16' ; // 使用 parseInt ( strNumber ); // => 16 在程序中一个函数可以先 声明 ,后 使用 。 初始化 被忽略掉了。例如: // 声明 function sum ( a , b ) { return a + b ; } // 使用 sum ( 5 , 6 ); // => 11 当这三个步骤按顺序执行的时候

详解JavaScript变量提升

旧街凉风 提交于 2020-02-20 01:40:32
   变 量在程序中随处可见。它们是一些始终在相互影响,相互作用的的数据和逻辑。正是这些互动使应用程序活了起来。   在JavaScript中使用变量很重要的一方面就是变量的提升 —— 它决定了一个变量何时可以被你的代码使用。如果你在寻找关于这方面的详细介绍,那你算是来对地方了。让我们一起看看吧。 1. 简介   提升是一种将变量和函数的声明移到函数作用域(如果不在任何函数内的话就是全局作用域)最顶部的机制。 提升影响了变量的生命周期,一个变量的生命周期包含3个阶段: 声明 - 创建一个新变量,例如 var myValue 初始化 - 用一个值初始化变量 例如 myValue = 150 使用 - 使用变量的值 例如 alert(myValue) 这个过程通常是像这样执行的:首先 声明 一个变量,然后用一个值给它 初始化 ,最后就是 使用 它。让我们看一个例子: // 声明 var strNumber; // 初始化 strNumber = '16'; // 使用 parseInt(strNumber); // => 16 在程序中一个函数可以先 声明 ,后 使用 。 初始化 被忽略掉了。例如: // 声明 function sum(a, b) { return a + b; } // 使用 sum(5, 6); // => 11   当这三个步骤按顺序执行的时候

一言难尽的js变量提升

拥有回忆 提交于 2020-02-20 01:06:58
基础知识 在这个课题开始之前我们先做一些基础知识的讲解 1、在顶级的区域内声明的变量为 window级别的变量。 也就是说var a=100 等价于 window.a=100; 2、局部的重新声明变量没有意义。var a=100;var a;后面的将没有意义。 3、在有参数函数的定义中 function abc(p1){} abc(1),在函数执行中,先构建,在执行,会有两个步骤,所以说当函数执行之前构建过程中,将临时生成代码 var p1=1;将来一切不赋值的声明将变得没有意义。 var p1;//没有意义 var p1=2;//有意义。 开始进入正题 全局作用域和局部作用域 全局作用域:整个JS执行环境 局部作用域:通过创建一个函数就开辟出了一个局部作用域 全局变量和 局部变量 全局变量:在全局作用域都可以访问的变量 局部变量:只能在当前局部作用域访问的 变量声明提升: 如果变量声明在函数里面,则将变量声明提升到函数的开头 如果变量声明是一个全局变量,则将变量声明提升到全局作用域的开头 变量运行(搜索)机制: 首先看,有没有局部作用域 如果有,查找是不是这个局部作用域定义的变量 如果不是,寻找上一级作用域,直到找到全局作用域 如果全局作用域也找不到这个变量,这个变量就是未定义的 undefined 第一题: var a=1; function test(){ console

javascript篇-----执行环境和作用域

℡╲_俬逩灬. 提交于 2020-02-19 08:43:29
  执行环境是javascript中最为重要的一个概念。执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。   全局执行性环境是最外围的一个执行环境,根据ECMAScript实现所在的宿主环境不同,表示执行环境的对象也不一样。在Web浏览器中,全局执行环境被认为是window对象,因为所有的全局变量和函数都是作为window对象的属性和方法创建的。某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。   每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境。ECMAScript程序中的执行流正是由这个方便的机制控制的。   当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是在保证对执行环境有权访问的所有变量和函数都有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象作为变量对象。活动对象在最开始时只包含一个变量,即arguments对象。作用域链中的下一个变量对象来自包含环境,而在下一个变量对象则来自下一个包含环境。这样,一直延续到全局执行环境