函数声明

Web前端知识体系

倖福魔咒の 提交于 2019-12-24 04:03:20
看到一篇不错的文章,拿来收藏和分享。 原文:http://mp.weixin.qq.com/s/UFTfdE7LYhHquWEzwZKLCQ 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 是引用类型,其他的都是原始类型

C++友元和内部类

孤街浪徒 提交于 2019-12-23 21:59:50
一、友元 1.1 友元分为:友元函数和友元类 友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。 1.2 友元函数:友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。 说明: ① 友元函数可访问类的私有成员,但不是类的成员函数 ② 友元函数不能用const修饰 ③ 友元函数可以在类定义的任何地方声明,不受类访问限定符限制 ④ 一个函数可以是多个类的友元函数 ⑤ 友元函数的调用与普通函数的调用和原理相同 1.3 友元成员函数:friend函数不仅可以是一般函数(非成员函数),而且可以是另一个类中的成员函数。 注意:可能会用到类的提前引用声明。 #include <iostream> using namespace std; class Date; //对Date类的提前引用声明 class Time { public: Time(int hour, int minute, int second) :hour(hour) , minute(minute) , second(second) {} void display(Date& d); //引用Date类的对象 private: int hour; int minute; int second; };

Yacc 与 Lex 快速入门

情到浓时终转凉″ 提交于 2019-12-23 21:21:45
developerWorks 中国 > Linux > Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 文档选项 打印本页 将此页作为电子邮件发送 级别: 初级 Ashish Bansal ( mailto:abansal@ieee.org?subject=Yacc 与 Lex 快速入门&cc=abansal@ieee.org ), 软件工程师, Sapient 公司 2000 年 11 月 01 日 Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿戏。Ashish Bansal 为您详细的讨论了编写自己的语言和编译器所用到的这两种工具,包括常规表达式、声明、匹配模式、变量、Yacc 语法和解析器代码。最后,他解释了怎样把 Lex 和 Yacc 结合起来。 Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。 Lex Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。 一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记

javascript面向过程与面向对象

自闭症网瘾萝莉.ら 提交于 2019-12-23 13:52:52
1 面向过程与面向对象 1)面向过程:面向过程专注于如何去解决一个问题的过程步骤。编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概念。 2)面向对象:专注于由哪一个对象来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题。 对于调用者来说,面向过程需要调用者自己去实现各种函数。而面向对象,只需要告诉调用者,对象中具体方法的功能,而不需要调用者了解方法中的实现细节。 2 面向对象的三大特征 这个对于计算机专业的人来说,相信大家已经很熟悉啦,那我就再说一遍吧~ 面向对象的三大特征是 继承、封装、多态 。JS可以模拟实现继承和封装,但是无法模拟实现多态,所以我们说JS是一门 基于 对象的语言,而非是面向对象的语言。 3 类和对象 1、类:一类具有相同特征(属性)和行为(方法)的集合。 比如 ,人类具有身高、体重等属性,吃饭、大笑等行为,所以,我们可以把人划分为一类。 2、对象:从类中,拿出具有确定属性值和方法的个体。 比如 ,张三-->属性:身高180体重180 方法:说话-->我叫张三,身高180 3、类和对象的关系: ①类是抽象的,对象是具体的(类是对象的抽象化,对象是类的具体化) ②类是一个抽象的概念,只能说类有属性和方法,但是不能给属性赋具体的。比如,人类有姓名,但是不能说人类的姓名叫什么。 对象是一个具体的个例

scala

余生颓废 提交于 2019-12-22 20:55:22
Scala 多范式编程语言 运行流程 类Java,先用scalac编译为.class字节码文件,然后再用scala执行出结果,也可用Scala直接运行,不会产生字节码文件,Scala也是依靠jvm来进行编译的 main入口函数 Scala为了简化编程过程,main入口函数和Java的入口函数类似,Scala中是以object伴生对象来代替class,Scala中的所有都是public的,所以不用再次声明public,Scala中用def模拟静态语法,Scala中注重完全面向对象,所以是先声明参数名,再定义参数类型:参数名:参数类型。Java中的定义参数为:参数类型:参数名,返回值类型用unit代替void,用=连接方法体 def Main (参数名:参数类型(可省略)):unit = {方法体} Scala中的变量 可以用val或var定义,var的值可变,val的值不可变(不可变是因为用final定义的字符串是存放的地址不可变,但是内容可变,用反射可以绕过编译流程,改变字符串内容,大多数情况下Scala中的变量用val定义) Scala中类型 Scala中的函数类型可以省略,因为Scala是强类型转换,所以定义的类型是不可变的,Scala中不存在基本类型,但是Scala中分为值类型和引用类型,Scala中的值类型和Java中的基本类型用法是相同的且均有8个

Swift 基本语法1

跟風遠走 提交于 2019-12-22 14:07:13
一、Swift简介 2010年的夏天,苹果公司的开发人员Chris Lattne接到了一个特别的任务,为OS X 和iOS平台开发下一代的编程语言,也就是Swift。 苹果公司于2014年WWDC(苹果开发者大会)发布的新开发语言Swift,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。 2015年的WWDC开发者大会上,苹果公司推出了Swift2.0版本,并且Swfit完全开源。 自从Swift发布以来,在http://www.tiobe.com中的排行一直处于上升的状态。 二、声明变量和常量 在Swift中使用“let”修饰一个常量,使用“var”修饰一个变量; let修饰常量的值是不可以更改的; var修饰的变量的值是可以更改的; 在声明常量和变量的时候可以使用表情符号、中文等命名常量名和变量名。 Swift里不会自动给常量变量赋初始值,也就是说常量变量不会有默认值,所以定义常量的时候一定要给定初始值 Swift定义变量或者常量的时候,需要标识出变量或者常量的类型,如果不标识,会根据初始值自动推断。 因为swift是强类型语言,所以不同类型的变量不能相加,如果想要相加,可以强制类型转换 1、声明常量变量 1 // MARK: - 定义常量变量:变量类型的隐式转换 2 3 // 在Swift中如果不给定变量常量的类型

JavaScript 权威指南(4): JavaScript 的作用域和提升

女生的网名这么多〃 提交于 2019-12-22 13:40:14
JavaScript 权威指南(4): JavaScript 的作用域和提升 原文 地址:http://dyy.im/4406.html 你知道下面的 JavaScript 程序执行时会输出什么值吗? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 答案是“10”,吃惊吗?那么下面的可能会真的让你大吃一惊: var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 这里浏览器会弹出“1”。这里发生了什么呢?这似乎看起来是奇怪,未知,让人混淆的,但这实际上是这门语言一个强大和富有表现力的特性。我不知道这一特性行为是否有标准名字,但我喜欢这个术语“提升(hoisting)”。本文试图揭示这一特性的机制,但首先让我们理解 JavaScript 的作用域。 JavaScript中的作用域(scope) JavaScript初学者最容易混淆的地方是作用域。实际上,不只是初学者。我遇到过许多经验丰富的JavaScript程序员,却不完全明白作用域。JavaScript的作用域如此容易混淆的原因是它看起来很像C家族的语言(类C语言)。考虑下面的C程序: #include <stdio.h> int

javascript变量声明提升

删除回忆录丶 提交于 2019-12-22 13:37:06
1.javascript引擎在运行一个js文件时,会把所有的变量声明提升到 当前作用域 的最前面,这叫变量声明提升。 因此,如果在当前作用域中 ,在某变量声明之前访问了该变量,则会返回undifined;而不是直接报错(未定义); 2.不只是变量声明,函数声明也会提升。 这里要注意函数表达式和函数声明的区别。函数表达式不会被提升,而函数声明可以提升。 先看一段代码 var v = "hello"; (function(){ console.log(v); var v = "world"; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 var v = "hello"; if(true){ console.log(v); var v = "world"; } 输出结果为”hello”,说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: var v = "hello"; (function(){ var v; //declaration hoisting console.log(v); v = "world"; })(); 声明

javascript进阶笔记(1)

做~自己de王妃 提交于 2019-12-22 12:39:04
学习js已经有一段时间了,大大小小还是能够做出一些东西来。不过觉得可惜的是,还是对js本身这门语言不是很熟悉,总有一点雾里看花的感觉,看得见,但是看不清楚。最近发现有一本关于js的叫做《忍者秘籍》的书刊,听说是jQuery作者写的,可以让初级者进阶,哇啦啦,打怪兽,加经验升级,多好的事情。于是,就有了此篇文章及其后续。闲话休谈,正事要紧! javascript是一门函数式语言(functional language)。最重要的,在js中, 函数 是 第一型对象(first-class object) ,也就是说,函数可以共处,可以将其视为其他任意类型的javascript对象。就像普通的js数据类型,函数可以被任意变量进行引用,或声明成对象字面量,甚至可以将其作为函数参数进行传递。 函数的第一型对象体现在: 1、它们可以通过字面量进行创建; 2、它们可以赋值给变量、数组或其他对象的属性; 3、它们可以作为参数传递给函数; 4、它们可以作为函数的返回值进行返回; 5、它们拥有动态创建并赋值的属性。 函数除了以上的功能外,它还包含一个功能,它们可以被调用。千万不要小瞧了函数的调用!因为不同的调用机制会产生不同的功效,特别是针对函数的this关键字。 当我们定义了一个函数,以便其他一些代码在适当的时候回头调用它,我们可以称之为回调。回调是高效利用js必不可少的一部分。

STL vector简介

荒凉一梦 提交于 2019-12-22 11:34:27
STL vector简介 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.成员函数 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6.front 得到数组头的引用 7.back 得到数组的最后一个单元的引用 8.max_size 得到vector最大可以是多大 9.capacity 当前vector分配的大小 10.size 当前使用数据的大小 11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值 12.reserve 改变当前vecotr所分配空间的大小 13.erase 删除指针指向的数据项 14.clear 清空当前的vector 15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1) 16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)