函数声明

前端之路|JavaScript基础

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

kvo与runtime

不羁的心 提交于 2019-11-29 06:47:38
创建新类 添加方法 isa-swizzling 测试方案: 添加全局断点 objc_allocateClassPair objc_registerClassPair class_addMethod 在动态添加类及属性这块,主要用的的 runtime函数是 1).objc_allocateClassPair—–通过这个函数,可以创建出一个类 2).class_addIvar—–为该类添加实例变量 3).sel_registerName—–注册一个 SEL方法 4).class_addMethod—–为创建的类动态添加方法 5).objc_registerClassPair—–为创建的类进行注册 6).class_getInstanceVariable—–获取类中的实例变量 7).object_setIvar—–为对象中的变量赋值 8).objc_disposeClassPair—–销毁创建出来的类 ———————————————— 版权声明:本文为CSDN博主「CINNS」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/nvlangxin/article/details/51610818 来源: https://www.cnblogs.com/feng9exe/p/11460994.html

C++中声明和定义的区别

China☆狼群 提交于 2019-11-29 05:50:05
1、定义包含了声明,但是声明不包含定义, 如 int a = 0; //定义并声明了变量 a extern int a; //只是声明了有一个变量 a 存在,具体 a 在哪定义的,需要编译器编译的时候去找。 2、函数也是类似,定义的时候同时声明。但如果只是声明,编译器只知道有这么个函数,具体函数怎么定义的要编译器去找。 void fun1(); //函数声明 void fun1(){ //函数定义 cout<<"fun1"<<endl; } 3、C/C++ 编译 cpp 文件是从上往下编译,所以 main 函数里面调用其他函数时,如果其他函数在 main 函数的下面,则要在 main 函数上面先声明这个函数。 或者把 main 函数放在最下面,这个不仅限于 main 函数,其他函数的调用都是如此。被调用的函数要在调用的函数之前声明 来源: https://www.cnblogs.com/gkh-whu/p/11457211.html

JavaScript闭包如何工作?

本秂侑毒 提交于 2019-11-29 05:46:31
您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到 了Scheme示例 ,但是不幸的是它没有帮助。 #1楼 我知道已经有很多解决方案,但是我猜想这个小而简单的脚本可以用来说明这个概念: // makeSequencer will return a "sequencer" function var makeSequencer = function() { var _count = 0; // not accessible outside this function var sequencer = function () { return _count++; } return sequencer; } var fnext = makeSequencer(); var v0 = fnext(); // v0 = 0; var v1 = fnext(); // v1 = 1; var vz = fnext._count // vz = undefined #2楼 面向初学者的JavaScript关闭 莫里斯在2006年2月2日星期二提交。 从此开始由社区编辑。 关闭不是魔术 本页说明了闭包,以便程序员可以使用有效的JavaScript代码来理解闭包。 它不适用于专家或功能性程序员。 一旦核心概念浮出水面,关闭

作用域和存储期

我的梦境 提交于 2019-11-29 04:03:24
  要创建大规模程序,必须首先理解作用域和存储期。 作用域和标识符的可见性   在如下代码所示的程序中对变量x的声明总共有三处。 /* 确认标识符的作用域 */ #include <stdio.h> int x = 75; /* A:文件作用域 */ void print_x(void) { printf("x = %d\n", x); } int main(void) { int i; int x = 999; /* B:块作用域 */ print_x();            //1 printf("x = %d\n", x);    //2 for (i = 0; i < 5; i++) { int x = i * 100; /* C:块作用域 */    //3 printf("x = %d\n", x);              //3 } printf("x = %d\n", x);          //4 return 0; }   首先我们可以看到A处声明的x。该变量的初始值为75,因为它是在函数外面声明定义的,所以这个x拥有 文件作用域 。   因此,函数print_x中的“x”就是上述的代码中出现的第一个x,程序执行后,屏幕上会输出           x = 75      显示的是第一个x的值   因为1处调用了函数print_x

typedef用法和陷阱

一个人想着一个人 提交于 2019-11-29 03:37:25
一、typedef的用法 1.用typedef来声明新的类型名,来代替已有的类型名,也就是给类型起别名。比如 1 typedef float REAL; //用REAL来代表float类型 2 REAL a; //定义一个REAL类型的变量,等价于float a,即定义一个float类型的变量a 这种用法经常用来作为定义与平台无关的类型,方便代码的跨平台移植。 例如,定义REAL类型为目标平台精度最高的类型。 1>在支持long double的平台上定义为: typedef long double REAL; 注:long double为C99增加的类型,ANSI C标准规定了double变量存储为 IEEE 64 位(8 个字节)浮点数值,但并未规定long double的确切精度,但规定long double的精度不少于double的精度。所以对于不同平台long double可能有不同的实现,有的是8字节,有的是10字节,有的是12字节或16字节。关于具体的编译器的情况, 可以通过 sizeof(long double)得知。 2>在不支持long double的平台上改为 typedef double REAL; 3>在double不支持的平台上改为 typedef float REAL; 因此, 当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。

Golang新开发者要注意的陷阱和常见错误

天大地大妈咪最大 提交于 2019-11-29 02:36:07
转自:http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/ 目录 [−] 初级 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing 不使用显式类型,无法使用“nil”来初始化变量 使用“nil” Slices and Maps Map的容量 字符串不会为nil Array函数的参数 在Slice和Array使用“range”语句时的出现的不希望得到的值 Slices和Arrays是一维的 访问不存在的Map Keys Strings无法修改 String和Byte Slice之间的转换 String和索引操作 字符串不总是UTF8文本 字符串的长度 在多行的Slice、Array和Map语句中遗漏逗号 log.Fatal和log.Panic不仅仅是Log 内建的数据结构操作不是同步的 String在“range”语句中的迭代值 对Map使用“for range”语句迭代 "switch"声明中的失效行为 自增和自减 按位NOT操作 操作优先级的差异 未导出的结构体不会被编码 有活动的Goroutines下的应用退出 向无缓存的Channel发送消息

ES6新增常用属性

会有一股神秘感。 提交于 2019-11-29 01:58:14
1.声明变量 let/const let:用来声明变量,类似于var,但是使用let有以下特性: (1).不存在变量提升 eg: // var 的情况 console.log(foo); // 输出undefined var foo = 2; // let 的情况 console.log(bar); // 报错ReferenceError let bar = 2; (2).暂时性死区 eg: var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } (3).不允许重复声明,同一作用域内只能声明一次 eg: // 报错 function func() { let a = 10; var a = 1; } // 报错 function func() { let a = 10; let a = 1; }因此,不能在函数内部重新声明参数。 function func(arg) { let arg; } func() // 报错 function func(arg) { { let arg; } } func() // 不报错 (4).新增的块级作用域 function f1() { let n = 5; if (true) { let n = 10; } console.log(n); // 5

【C/C++】复合类型(自定义类型)

杀马特。学长 韩版系。学妹 提交于 2019-11-29 00:50:57
gcc编译器 gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,gcc同样适用于微软的Windows。 gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、Object C++、Go语言的编译器大家族。 编译命令格式: gcc [-option1] ... <filename> g++ [-option1] ... <filename> 1 2 命令、选项和源文件之间使用空格分隔 一行命令中可以有零个、一个或多个选项 文件名可以包含文件的绝对路径,也可以使用相对路径 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe gcc、g++编译常用选项说明: 选项 含义 -o file 指定生成的输出文件名为file -E 只进行预处理 -S(大写) 只进行预处理和编译 -c(小写) 只进行预处理、编译和汇编 C语言是不跨平台的,用Java用习惯的我突然回到C,有点不适应,用SpringBoot完成的Java项目,打成jar包

VPB编译日志2

雨燕双飞 提交于 2019-11-29 00:38:54
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------ 1> Checking Build System 1> CMake does not need to re-run because E:/OpenSourceGraph/VirtualPlanetBuilder_0_9_build/CMakeFiles/generate.stamp is up-to-date. 1> CMake does not need to re-run because E:/OpenSourceGraph/VirtualPlanetBuilder_0_9_build/src/CMakeFiles/generate.stamp is up-to-date. 1> CMake does not need to re-run because E:/OpenSourceGraph/VirtualPlanetBuilder_0_9_build/src/vpb/CMakeFiles/generate.stamp is up-to-date. 1> CMake does not need to re-run because E:/OpenSourceGraph/VirtualPlanetBuilder_0_9_build/applications