函数声明

函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

喜你入骨 提交于 2019-12-02 02:45:18
函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量! function f1(){     n=999; } f1(); alert(n); // 999 子函数可以一层一层读取到父元素的变量,反之不行。但假如我们需要得到函数内的局部变量,正常操作是:在函数的内部再定义一个函数,该函数称之为闭包,通过闭包,向上去读取父函数的局部变量。闭包的作用:读取局部变量;让局部变量的值始终保存在内存中。 function f1(){   var n=999;   function f2(){//闭包:定义在一个函数内部的函数/能够读取其他函数内部的变量的函数/将函数内部和函数外部链接起来的一座桥梁     alert(n); // 999   } } 来源: https://www.cnblogs.com/677a/p/11726729.html

Google Go Primer(一)

落花浮王杯 提交于 2019-12-02 00:26:57
Go语言是什么? Google最近发布新型的编程语言, Go 。它被设计为将现代编程语言的先进 性带入到目前仍由C语言占统治地位的系统层面。然而,这一语言仍在试验阶段并在不断演变。 Go语言的设计者计划设计一门简单、高效、安全和 并发的语言。这门语言简单到甚至不需要有一个符号表来进行词法分析。它可以快速地编译;整个工程的编译时间在秒以下的情况是常事。它具备垃圾回收功能,因 此从内存的角度是安全的。它进行静态类型检查,并且不允许强制类型转换,因而对于类型而言是安全的。同时语言还内建了强大的并发实现机制。 阅读Go Go的语法传承了与C一样的风格。程序由函数组成,而函数体是一系列的语句序列。一段代码块用花括号括起来。这门语言保留有限的关键字。表达式使用 同样的 中缀运算符 。语法上并无 太多出奇之处。 Go语言的作者在设计这一语言时坚持一个单一的指导原则:简单明了至上。一些新的语法构件提供了简明地表达一些约定俗成的概 念的方式,相较之下用C表达显得冗长。而其他方面则是针对几十年的使用所呈现出来的一些不合理的语言选择作出了改进。 变量声明 变量是如下声明的: var sum int // 简单声明 var total int = 42 // 声明并初始化 最值得注意的是,这些声明里的类型跟在变量名的 后面 。乍一看有点怪,但这更清晰明了。比如,以下面这个C片段来说: int* a, b;

实现CStack类遇到的问题

浪尽此生 提交于 2019-12-02 00:26:28
自己动手编写一个CStack类,包括头文件CStack.h以及源文件CStack.cpp。 遇到了几个问题: 1.每个文件都要写using namespace std;没写的文件会报错:缺少类型说明符……(这不是废话吗。。可是我就是这样报错许久。。。) 2.class CStack的定义放在.h中,在.cpp文件中不能再重复该定义,否则编译会报错(class重复定义)。.cpp文件只要包括class中的各个未定义成员函数的定义即可。 3.在class定义中定义的成员函数默认是inline函数(即使不显示声明inline)。如果一个inline函数会在多个源文件中被用到,那么必须把它定义在头文件中。如果不会在多个源文件中用到,则 class中未定义的成员函数(即.h文件中只声明且没有显示声明inline的成员函数)也可以在.cpp文件中定义的时候加上inline,或者声明和定义时都加上inline都可以(即可以正常编译及运行)!但是还是建议将inline函数的定义放在头文件中。 先上代码: CStack.h: #pragma once //保证头文件只被编译一次 #include <vector> #include <string> using namespace std; class CStack { public: CStack(void); ~CStack(void);

关闭ESlint 语法检测配置方法

独自空忆成欢 提交于 2019-12-01 21:54:16
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qappleh/article/details/80975368 刚刚开始的小伙伴是不是空格报错少一行报错各种错?是不是觉得快被限制的失去了自由的思绪了?受折磨后找到了不错的文章来取消eslint语法检测限制,作为学习笔记摘自segmentfault 其实我并不反对这些语法检测,但是像许多反个人意愿的那就真的不得不吐槽了,比如vue-cli脚手架创建的默认eslint规则: 代码末尾不能加分号 ; 代码中不能存在多行空行 tab键不能使用,必须换成两个空格 代码中不能存在声明了但未使用的变量 以上规则个人认为真的反人类!调试代码太难了。 关闭eslint 这里只说vue-cli脚手架的关闭方法,其实很简单,就是把 build/webpack.base.conf.js 配置文件中的eslint rules注释掉即可。 module: { rules: [ // { // test: /\.(js|vue)$/, // loader: 'eslint-loader', // enforce: 'pre', // include: [resolve('src'), resolve('test')], // options: { /

C++中头文件与源文件的作用详解

一世执手 提交于 2019-12-01 21:11:43
一、C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件―― .cpp 文件和 .h 文件。其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码;而 .h 文件则被称作 C++ 头文件,里面放的也是 C++ 的源代码。 C++ 语言支持"分别编译"(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的 .cpp 文件里。.cpp 文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。比如,在文件 a.cpp 中定义了一个全局函数 "void a(){}",而在文件 b.cpp 中需要调用这个函数。即使这样,文件 a.cpp 和文件 b.cpp 并不需要相互知道对方的存在,而是可以分别地对它们进行编译,编译成目标文件之后再链接,整个程序就可以运行了。 这是怎么实现的呢?从写程序的角度来讲,很简单。在文件 b.cpp 中,在调用 "void a()" 函数之前,先声明一下这个函数 "voida();",就可以了。这是因为编译器在编译 b.cpp 的时候会生成一个符号表(symbol table),像 "void a()" 这样的看不到定义的符号,就会被存放在这个表中。再进行链接的时候

__declspec关键字详细用法

廉价感情. 提交于 2019-12-01 21:10:39
__declspec用于指定所给定类型的实例的与 Microsoft 相关的存储方式。其它的有关存储方式的修饰符如 static 与 extern 等是 C 和 C++ 语言的 ANSI 规范,而 __declspec 是一种扩展属性的定义。扩展属性语法简化并标准化了 C 和 C++ 语言关于 Microsoft 的扩展。 用法: __declspec ( extended-decl-modifier ) extended-decl-modifier参数如下,可同时出现,中间有空格隔开 : align ( C++ ) allocate appdomain deprecated ( C++ ) dllimport dllexport jitintrinsic naked ( C++ ) noalias noinline noreturn nothrow ( C++ ) novtable process property( C++ ) restrict selectany thread uuid( C++ ) 1.__declspec关键字应该出现在简单声明的前面。对于出现在 * 或 & 后面或者变量声明中标识符的前面的 __declspec ,编译器将忽略并且不给出警告。 2.要注意区分 __declspec 是修饰类型还是修饰变量: __declspec(align(8))

11JS函数

大兔子大兔子 提交于 2019-12-01 20:27:23
简单函数封装: function getSum(num1 num2){ var sum=0; for(var i=num;i<=num2;i++){ sum+=i; } console.log(sum); } getSum(1,100); getSum(10,50); 使用相同的重复的代码时可使用 顺序 1.声明函数 function 函数名(){ //循环体 } 2.调用函数 函数名(); 实参和形参 : 声明中的是形参,调用里的是实参; 实参把值赋给形参,形参接收传来的值 ##注意:个数需要匹配 ##return 把值返回给调用者即是 函数名()=return后面的值 #arguments的使用:获取形参个数,伪数组 来源: https://www.cnblogs.com/cai-bai/p/11716833.html

前端之JavaScript

為{幸葍}努か 提交于 2019-12-01 19:12:58
1 | 0 JavaScript概述 1 | 1 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。 1 | 2 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 ECMAScript 5.1 版本变更

c++语法笔记(下)

我的梦境 提交于 2019-12-01 17:21:25
多态性与虚函数 多态性 (函数重载,运算符重载就是多态性现象) 多态性 :向不同对象发送同一个消息,不同对象在接收时会产生不同的行为。(每个对象用自己的方式去响应共同的消息) 多态性又可以分为静态多态性和动态多态性 静态多态性 在编译时编译系统就可以判定调用哪个重载运算符(函数)。 #include<iostream> using namespace std; class point { public: point(float a, float b) { //构造函数 x = a; y = b; } friend ostream & operator <<(ostream &, point &); //运算符重载 protected: float x, y; }; std::ostream &operator<<(std::ostream &output, point &p) { //运算符重载的定义 output << "(" << p.x << "," << p.y << ")" << endl; return output; } class circle :public point { public: circle(float a, float b, float c) :point(a, b), radius(c) {} //构造函数 friend ostream

前端之JavaScript

烈酒焚心 提交于 2019-12-01 16:58:10
目录 JavaScript概述 ECMAScript和JavaScript的关系 ECMAScript的历史 JavaScript引用方式 JavaScript语言规范 JavaScript基础 变量声明 注意: JavaScript数据类型 JavaScript拥有动态类型 数值(Number) 字符串(String) 布尔值(Boolean) null和undefined 对象(Object) forEach() splice() map() 类型查询 运算符 算数运算符 比较运算符 逻辑运算符 赋值运算符 流程控制 if-else if-else if-else switch for while 三元运算 函数 函数定义 函数中的arguments参数 函数的全局变量和局部变量 作用域 词法分析(尝试理) 内置对象和方法 自定义对象 Date对象 JSON对象 RegExp对象 Math对象 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。