作用域

代码块和作用域

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-04 23:45:08
大括号括起来的就是代码块 有名字的代码块——if-else 代码块、for 循环代码块、main方法代码块 代码块也叫体,例如 for 循环体、main方法体 代码块可以嵌套 变量的作用域 代码块里可以创建和使用变量 代码块里可以使用外层代码块的变量 但是在外层代码块里不可以使用内层代码块里的变量。(是否可以使用变量,也称为变量在某个代码块的 可见性。 也就是说,外层代码块创建的变量对内层代码块可见,内层代码块中创建的变量对外层代码块不可见。) 内层命名空间(或者说是作用域)不可以重复定义外层代码块的变量,但是可以使用外层代码块的变量 代码块无论嵌套多少层,都遵循以上变量的可见性的规则。 作用域和命名空间 同一个命名空间中的变量不可以重名 为了避免变量名冲突,所以必须有命名空间 public class CodeBlock { public static void main(String[] args) { // 内部代码块里的作用域(命名空间)是可以使用到外部代码块中的变量的。 // 反过来,外部无法使用到代码块作用域中的变量。 // 代码块的作用域随着代码块的执行的结束而结束。 int outer = 100; { int inner = 10; System.out.println("outer的值是" + outer + "。 inner的值是" + inner); } /

angularJS(4)

倖福魔咒の 提交于 2020-01-04 11:33:15
一:angulaJs的作用域scope Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。 scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。 Scope 可应用在视图和控制器上。 AngularJS 应用组成如下 :$scope是一个模型 View(视图), 即 HTML。 Model(模型), 当前视图中可用的数据。 Controller(控制器), 即 JavaScript 函数,可以添加或修改属性。 在之前的内容中说到的都是只有一个作用域的,但是在大型的项目当中,可能会存在多个的作用域 如下面的例子: <div ng-app="myapp"> <h1 style="color:#ff0000" ng-controller="mycc">{{myname}}</h1> <h1 ng-controller="ucc">{{myname}}</h1> </div> <script language="javascript"> var app=angular.module("myapp",[]); app.controller("mycc",function($scope){ $scope.myname="猪八戒"; }) app.controller("ucc"

H5 缓存机制浅析 移动端 Web 加载性能优化

六月ゝ 毕业季﹏ 提交于 2020-01-04 00:17:24
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)。 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈

H5 缓存机制浅析 移动端 Web 加载性能优化

我怕爱的太早我们不能终老 提交于 2020-01-04 00:07:30
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)。 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈

let vs var

不打扰是莪最后的温柔 提交于 2020-01-02 19:18:36
事实上 var的设计可以看成是js语言设计上的一个错误,但是这种错误多半不能修复和已出,因为要前后兼容,大概2008年的时候,Brendan Eich就决定修复这个错误,于是他添加了一个新的关键词:let,我们可以将let看成更完美的 var,很多语言在它早期被设计的时候,基于当时历史的原因,他考虑不到以后可能面临的问题,所以很多语言都是有缺陷的,比如java,近几年一直在频繁的更新,一年更新一个版本甚至两三个版本, 块级作用域 js中使用var来声明一个变量时,变量的作用域主要和函数的定义有关 针对其他快定义来说是没有作用域的,比如if/for,这在我们开发中往往会遇到一些问题 let和var都是用来定义变量的,但是let是有块级作用域的,var没有块级作用域, 那么什么是作用域?? 作用域其实完整叫法应该是变量作用域 ,就是变量在什么范围内是可用的,很多语言都是有块级作用域的, 没有块级作用域会引起的问题 if的块级 var fn; if (true) { var name = "kobe" fn = function() { console.log(name) } } var name = "james" fn() 本来你是想打印kobe的,结果你不知道什么时候在外面重新定义了下name,结果james替换了kobe 没有块级作用域会引起的问题 for的块级 var btns

Vue进阶(Bus/作用域slot/动态组件)

蓝咒 提交于 2020-01-02 04:28:42
一、Vue非父子组件传值(Bus/总线/发布订阅模式/观察者模式) 我们在之前已经知道了父子传值。父组件传递过来了的值,在子组件通过props接受,然后就可以使用了。 也学过了隔代传值,均是通过props逐层传递实现。那么,兄弟节点之间怎么传值呢? 那就是通过bus啦。 通过bus实现方式如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <child content='Dell'></child> <child content='Lee'></child> </div> <script src="js/vue.js"></script> <script> //给每个Vue绑定一个bus属性,其实他是一个Vue实例 Vue.prototype.bus = new Vue() Vue.component('child',{ data:function() { return { //为了避免直接修改父组件传过来的值,把父组件的值来一份拷贝 msg:this.content } }, props:{ content:String }, template:'<div @click="handleClick">{{msg

大熊君大话NodeJS之------Global Objects全局对象

为君一笑 提交于 2020-01-02 01:34:16
一,开篇分析 在上个章节中我们学习了NodeJS的基础理论知识,对于这些理论知识来说理解是至关重要的,在后续的章节中,我们会对照着官方文档逐步学习里面的各部分模块,好了该是本文主角登台亮相的时候了, Global 让我们来看一下官方的定义: Global Objects全局对象 These objects are available in all modules. Some of these objects aren't actually in the global scope but in the module scope - this will be noted. 这些对象在所有的模块中都可用。实际上有些对象并不在全局作用域范围中,但是在它的模块作用域中------这些会标识出来的。 In browsers, the top-level scope is the global scope. That means that in browsers if you're in the global scope var something will define a global variable. In Node this is different. The top-level scope is not the global scope; var something inside a

学习js的五个不良编码习惯

南楼画角 提交于 2020-01-01 17:25:39
本文根据外网文章译制而来   原文:https://dmitripavlutin.com/unlearn-javascript-bad-coding-habits/   译者:前端小智   为了保证的可读性,本文采用意译而非直译。   在阅读JavaScript代码时,你是否有过这种感觉   你几乎不明白代码的作用?   代码使用了很多 JavaScript 技巧?   命名和编码风格太过随意?   这些都是不良编码习惯的征兆。   在这篇文章中,我描述了JavaScript中常见的5种不良编码习惯。重要的是,本文会给出一些可行的建议,如何的摆脱摆脱这些习惯。   1.不要使用隐式类型转换   JavaScript是一种松散类型的语言。如果使用得当,这是一个好处,因为它给你带来了灵活性。   大多数运算符 +-*/==(不包括 ===)在处理不同类型的操作数时会进行隐式转换。   语句 if(condition){...}, while(condition){...}隐式地将条件转换为布尔值。   下面的示例依赖于类型的隐式转换,这种有时候会让人感到很困惑:   console.log("2" + "1"); // => "21"   console.log("2" - "1"); // => 1   console.log('' == 0); // => true  

JS 的5个不良编码习惯

こ雲淡風輕ζ 提交于 2020-01-01 17:25:22
1.不要使用隐式类型转换 JavaScript是一种松散类型的语言。如果使用得当,这是一个好处,因为它给你带来了灵活性。 大多数运算符 + - * / == (不包括 === )在处理不同类型的操作数时会进行隐式转换。 语句 if ( condition ){...} , while ( condition ){...} 隐式地将条件转换为布尔值。 下面的示例依赖于类型的隐式转换,这种有时候会让人感到很困惑: console . log ( "2" + "1" ); // => "21" console . log ( "2" - "1" ); // => 1 console . log ( '' == 0 ); // => true console . log ( true == []); // -> false console . log ( true == ![]); // -> false 过度依赖隐式类型转换是一个坏习惯。首先,它使你的代码在边缘情况下不太稳定。其次,增加了引入难以重现和修复的bug的机会。 现在咱们实现一个获取对象属性的函数。如果属性不存在,函数返回一个默认值 function getProp ( object , propertyName , defaultValue ) { if (! object [ propertyName ]) {

【学习】018 Spring框架

坚强是说给别人听的谎言 提交于 2020-01-01 12:46:53
Spring的概述 Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。 且可以和其他框架一起使用;Spring与Struts, Spring与hibernate (起到整合(粘合)作用的一个框架) Spring提供了一站式解决方案: 1) Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系 2) Spring Web Spring对web模块的支持。 可以与struts整合,让struts的action创建交给spring spring mvc模式 3) Spring DAO Spring 对jdbc操作的支持 【JdbcTemplate模板工具类】 4) Spring ORM spring对orm的支持: 既可以与hibernate整合,【session】 也可以使用spring的对hibernate操作的封装 5)Spring AOP 切面编程 6)SpringEE spring 对javaEE其他模块的支持 Spring的环境搭建 spring环境需要maven 的jar包依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=