作用域

EL+jstl

纵然是瞬间 提交于 2019-11-29 23:55:30
服务器端: 不再进行页面的跳转,而是通过返回字符串信息,完成交互 request作用域 不使用 底层就是使用Response.getWriter()获取输出流 进行交互 EL表达式语言:获取作用域中的数据 用于替换输出脚本<%= %> ${scope.key} //获取具体某个作用域中的数据 ${key } //获取作用域中的数据、逐级查找(pageContext【pageScope】、request、session、application) II. 获取基本类型、字符串: 例1: request.setAttribute(“name” , “tom”); //存储在request作用域 ${requestScope.name} //获取request作用域中name的键所对应的值 例2: request.setAttribute(“name” , “tom”); //存储在request作用域 ${name } //从最小作用域逐级查找name的键所对应的值 EL和JSP脚本的区别: <%=request.getAttribute(“key”) %> 没找到返回null ${requestScope.key } 没找到返回“” III. 获取对象类型://只能访问对象的get方法,必须按照命名规范定义 IV. 数组、集合:(Array、List、Map) (Set没下标

如何让你的 JS 写得更漂亮

浪子不回头ぞ 提交于 2019-11-29 23:47:20
网上有不少关于JS编写优化建议,这里我根据自己的经验提出一些比较有用的意见。 1. 按强类型风格写代码 JS是弱类型的,但是写代码的时候不能太随意,写得太随意也体现了编码风格不好。下面分点说明: (1)定义变量的时候要指明类型,告诉JS解释器这个变量是什么数据类型的,而不要让解释器去猜,例如不好的写法: var num, str, obj; 声明了三个变量,但其实没什么用,因为解释器不知道它们是什么类型的,好的写法应该是这样的: var num = 0, str = '', obj = null; 定义变量的时候就给他一个默认值,这样不仅方便了解释器,也方便了阅读代码的人,他会在心里有数——知道这些变量可能会当作什么用。 (2)不要随意地改变变量的类型,例如下面代码: var num = 5; num = "-" + num; 第1行它是一个整型,第2行它变成了一个字符串。因为JS最终都会被解释成汇编的语言,汇编语言变量的类型肯定是要确定的,你把一个整型的改成了字符串,那解释器就得做一些额外的处理。并且这种编码风格是不提倡的,有一个变量第1行是一个整型,第10行变成了一个字符串,第20行又变成了一个object,这样就让阅读代码的人比较困惑,上面明明是一个整数,怎么突然又变成一个字符串了。好的写法应该是再定义一个字符串的变量: var num = 5; var sign = "-"

C++:Name Lookup & Best Match

[亡魂溺海] 提交于 2019-11-29 22:06:44
名字查找 每当一个变量或者一个对象出现,编译器都会进行 名字查找(name lookup) ,以确认这个变量或对象的具体属性。一般情况下,程序会从变量出现的地方开始向上查找,由内向外查找各级作用域直到全局作用域,找到同名的变量声明即停止,若最终没找到则报错。 #include <iostream> using namespace std; int a = 0; int main() { string a = "1"; cout << a << endl; // 在main函数体内找到了a的声明,停止名字查找,输出为string的内容“1” return 0; } 名字查找还受到作用域限定符 :: 的影响,若变量之前出现了作用域限定,那么则会从限定的作用域内进行全局搜索,并且不会查找其他位置。如果 :: 之前没有出现作用域名,那么就会在全局作用域查找。 #include <iostream> using namespace std; int a = 0; int main() { string a = "1"; cout << ::a << endl; // 限定a的查找从全局作用域开始,那么首先被找到的是a的int类型定义,程序输出0 return 0; } 此外,由于在找到同名声明之后便会停止查找, 函数匹配出现在名字查找之后 。 #include <iostream>

jsp笔记一

拥有回忆 提交于 2019-11-29 21:54:44
jsp的页面元素 脚本 <% %> 局部变量,java语句 <%! %> 全局变量,定义方法 <%=输出表达式 %> 通常,修改web.xml、配置文件、java 需要重启tomcat服务 如果是修改 jsp\html\css\js,不需要重启 注释 html注释 java注释 // / ... / jsp注释 <%-- --%> jsp指令 <@page %> 定义页面的依赖属性,如脚本语言,error页面,缓存需求等 <@include %> 包含其他文件 <%taglib %> 引入标签库的定义,可以是自定义标签 page指定的属性 language:jsp页面使用的脚本语言 import: 导入类 pageEncoding: jsp 文件自身编码 contentType: 浏览器解析jsp的编码 jsp行为 JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。 行为标签只有一种语法格式,它严格遵守XML标准: <jsp:action_name attribute="value" /> 语法 描述 jsp:include 用于当前页面中包含静态或动态资源 jsp:userBean 寻找和初始化一个javaBean组件 jsp:setProperty

python之路——函数进阶

我的未来我决定 提交于 2019-11-29 21:30:32
阅读目录  楔子  命名空间和作用域  函数嵌套及作用域链  函数名的本质  闭包  本章小结 返回顶部 楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print(bigger) 之前是不是我告诉你们要把结果return回来你们就照做了?可是你们有没有想过,我们为什么要把结果返回?如果我们不返回m,直接在程序中打印,行不行? 来看结果: >>> def my_max(x,y): ... m = x if x>y else y ... >>> my_max(10,20) >>> print(m) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'm' is not defined 报错了!错误是“name 'm' is not defined”。变量m没有被定义。。。为啥?我明明定义了呀! 在这里我们首先回忆一下python代码运行的时候遇到函数是怎么做的。 从python解释器开始执行之后,就在内存中开辟了一个空间 每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来。 但是

Eclipse 常用快捷键

柔情痞子 提交于 2019-11-29 20:56:21
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率。Eclipse中有如下一些和编辑相关的快捷键。 1. 【ALT+/】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。 2. 【Ctrl+O】 显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。 3. 【Ctrl+/】 快速添加注释,能为光标所在行或所选定行快速添加注释或取消注释,在调试的时候可能总会需要注释一些东西或取消注释,现在好了,不需要每行进行重复的注释。 4. 【Ctrl+D】 删除当前行,这也是笔者的最爱之一,不用为删除一行而按那么多次的删除键。 5. 【Ctrl+M】 窗口最大化和还原,用户在窗口中进行操作时,总会觉得当前窗口小(尤其在编写代码时),现在好了,试试【Ctrl+M】快捷键。 查看和定位快捷键 在程序中,迅速定位代码的位置,快速找到Bug的所在,是非常不容易的事,Eclipse提供了强大的查找功能,可以利用如下的快捷键帮助完成查找定位的工作。 1. 【Ctrl+K】、【Ctrl++Shift+K】 快速向下和向上查找选定的内容,从此不再需要用鼠标单击查找对话框了。 2. 【Ctrl+Shift+T】 查找工作空间(Workspace

python快速学习回忆版本------第六章-3

拈花ヽ惹草 提交于 2019-11-29 18:26:09
''' 作用域:变量可以使用的范围,程序的变量并不是在哪儿个位置都可以访问的,访问的权限决定于 这个变量实在哪里赋值 划分: 1、局部作用域L 2、闭包函数外到函数中E 3、全局作用域G 4、内建作用域B 变量查找规则: L->E->G->B ''' num=10 print("1--------",id(num)) def func(): #global 将定义的变量申明成全局变量 global num num=20 print("2------",id(num)) print("1------num = %d"%num) func() print("2-----num = %d"%num) def fun2(): a=10 def fun3(): a=20 #这个时候a是新的一个值,如果需要修改,需要申明nonlocal a nonlocal a #nonlocal 这个只能查找上一层作用域 print("1------a = %d"%a) fun3() print("2------a = %d"%a) fun2() 来源: https://blog.csdn.net/nihaowzw/article/details/100879093

let与var的区别

不羁的心 提交于 2019-11-29 18:00:43
{ var str1 = "小花" ; let str2 = "小明" ; console.log(str1); //小花 console.log(str2); //小明 } console.log(str1); //小花 console.log(str2); //Error:str2 is not defined let作用域仅限于当前代码块,而var的作用域是全局的 let不能被重复定义 来源: https://www.cnblogs.com/lee1-w/p/11525285.html

call,apply,bind的用法与区别

感情迁移 提交于 2019-11-29 17:43:55
call,apply,bind的用法与区别: https://www.cnblogs.com/Jade-Liu18831/p/9580410.html 1.call/apply/bind方法的来源    首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法?   call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法。 1 console.log(Function.prototype.hasOwnProperty('call')) //true 2 console.log(Function.prototype.hasOwnProperty('apply')) //true 3 console.log(Function.prototype.hasOwnProperty('bind')) //true   上面代码中,都返回了true,表明三种方法都是继承自Function.prototype的。当然,普通的对象,函数,数组都继承了Function.prototype对象中的三个方法,所以这三个方法都可以在对象,数组,函数中使用。   关于继承的概念,会在以后与大家分享。 2.Function.prototype.call()   函数实例的 call 方法

e

三世轮回 提交于 2019-11-29 17:42:17
Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉。 一、JAVASCRIPT 篇 0、基础语法 Javascript 基础语法包括:变量声明、数据类型、函数、控制语句、内置对象等。 在ES5 中,变量声明有两种方式,分别是 var 和 function ,var 用于声明普通的变量,接收任意类型,function用于声明函数。另外,ES6 新增了 let、const、import 和 class 等四个命令,分别用以声明 普通变量、静态变量、模块 和 类 。 JS数据类型共有六种,分别是 String、Number、Boolean、Null、Undefined 和 Object 等, 另外,ES6新增了 Symbol 类型。其中,Object 是引用类型,其他的都是原始类型(Primitive Type)。 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈