函数声明

补充JavaScript

别来无恙 提交于 2019-12-26 07:26:59
1 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的历史 注:ES6就是指ECMAScript 6。 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: 核心(ECMAScript) 文档对象模型(DOM) Document object model (整合js,css,html)

C++内联函数与宏定义

一曲冷凌霜 提交于 2019-12-26 06:12:40
用内联取代宏: 1.内联可调试; 2.可进行类型安全检查或自动类型转换; 3.可访问成员变量。 另外,定义在类声明中的成员函数自动转化为内联函数。 文章(一) 内联函数与宏定义   在C中,常用预处理语句#define来代替一个函数定义。例如:     #define MAX(a,b) ((a)>(b)?(a):(b))   该语句使得程序中每个出现MAX(a,b)函数调用的地方都被宏定义中后面的表达式((a)>(b)?(a):(b))所替换。   宏定义语句的书写格式有过分的讲究, MAX与括号之间不能有空格,所有的参数都要   放在括号里。尽管如此,它还是有麻烦:     int a=1,b=0;     MAX(a++,b); //a被增值2次     MAX(a++,b+10); //a被增值1次     MAX(a,"Hello"); //错误地比较int和字符串,没有参数类型检查     MAX( )函数的求值会由于两个参数值的大小不同而产生不同的副作用。     MAX(a++,b)的值为2,同时a的值为3;     MAX(a++,b+10)的值为10,同时a的值为2。   如果是普通函数,则MAX(a,"HellO")会受到函数调用的检查,但此处不会因为两个参数类型不同而被编译拒之门外。幸运的是,通过一个内联函数可以得到所有宏的替换效能和

函数内联

冷暖自知 提交于 2019-12-26 06:12:08
http://blog.csdn.net/lwbeyond/article/details/6445370 函数内联 1. 用内联取代宏代码 C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。 在 C 程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函 数。 预处理器用复制宏代码的方式代替函数调用, 省去了参数压栈、 生成汇编语言的 CALL 调用、返回参数、执行 return 等过程,从而提高了速度。使用宏代码最大的缺点是容 易出错 ,预处理器在复制宏代码时常常产生意想不到的边际效应。 例如 #define MAX(a, b) (a) > (b) ? (a) : (b) 语句 result = MAX(i, j) + 2 ; 将被预处理器解释为 result = (i) > (j) ? (i) : (j) + 2 ; 由于运算符‘ +’比运算符‘ :’的优先级高,所以上述语句并不等价于期望的 result = ( (i) > (j) ? (i) : (j) ) + 2 ; 如果把宏代码改写为 #define MAX(a, b) ( (a) > (b) ? (a) : (b) ) 则可以解决由优先级引起的错误。但是即使使用修改后的宏代码也不是万无一失的,例 如语句 result = MAX(i++, j); 将被预处理器解释为 result =

【宠粉通道】叫我讲解的一道前端JS面试题-灵魂三问:prototype?类的prototype是什么?对象的proto是什么

元气小坏坏 提交于 2019-12-26 02:07:02
作者 | Jeskson 来源 | 达达前端小酒馆 1 究竟是什么样的题目让我徒弟疑惑呢?让我们看看截图先,来源于wx群: 看看我是怎么回答的: function Foo() { getName = function () { alert (1); }; return this; } var getName; //只提升变量声明 function getName() { alert (5);} //提升函数声明,覆盖var的声明 Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { alert (3);}; getName = function () { alert (4);}; //最终的赋值再次覆盖function getName声明 getName(); //最终输出4 看懂没呢?没看懂也别急哈: 先让我们了解函数的定义: 函数声明,可以先调用再声明 dadaFn(); function dadaFn(){ console.log(dadaFn); } / 返回 f -> function function dadaFn() { console.log(dadaFn); } 函数表达式,先声明再调用: let daDafn = function() { console

JavaScript 究竟是怎样执行的?

假装没事ソ 提交于 2019-12-25 22:23:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘要: 理解 JS 引擎运行原理。 作者:前端小智 原文: 搞懂 JavaScript 引擎运行原理 Fundebug 经授权转载,版权归原作者所有。 一些名词 JS 引擎 — 一个读取代码并运行的引擎,没有单一的“JS 引擎”;每个浏览器都有自己的引擎,如谷歌有 V。 作用域 — 可以从中访问变量的“区域”。 词法作用域 — 在词法阶段的作用域,换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变。 块作用域 — 由花括号{}创建的范围 作用域链 — 函数可以上升到它的外部环境(词法上)来搜索一个变量,它可以一直向上查找,直到它到达全局作用域。 同步 — 一次执行一件事, “同步”引擎一次只执行一行,JavaScript 是同步的。 异步 — 同时做多个事,JS 通过 浏览器 API 模拟异步行为 事件循环(Event Loop) - 浏览器 API 完成函数调用的过程,将回调函数推送到回调队列(callback queue),然后当堆栈为空时,它将回调函数推送到调用堆栈。 堆栈 —一种数据结构,只能将元素推入并弹出顶部元素。 想想堆叠一个字形的塔楼; 你不能删除中间块,后进先出。 堆 — 变量存储在内存中。 调用堆栈 — 函数调用的队列

前端基础之JavaScript

微笑、不失礼 提交于 2019-12-25 19:04:45
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

[翻译]函数:声明和表达式

对着背影说爱祢 提交于 2019-12-25 15:14:14
  昨天看了一篇文章 《命名函数表达式探秘》 ,但我对函数表达式和声明之间的区别还是不太清楚,所以查了些资料,翻译了这篇 文章 。   文章很基础,但是讲的很清晰。   以下译文:    函数:声明和表达式 函数,像变量一样,可以在代码的任意地方定义它。 JS 提供了几个方法去定义它们。 1.函数声明 (Function Declaration) 2.函数表达式 (Function Expression) 3.通过调用new Function 返回。 语法 创建一个函数的基本方法是通过一个函数声明。语法如下: function f(arg1, arg2, ...) { ... code ... } 实现起来像这样子: 1 function sayHi(name) { 2 alert( "Hi, " +name) 3 } 4 5 sayHi( 'John' ) 上面的例子声明了一个带有一个参数name, 函数名为sayHi的函数,并且调用了它。 返回值 我们用return语句来返回一个值。 1 function sum(a, b) { 2 return a+b 3 } 4 5 var result = sum(2,5) 6 alert(result) 如果函数不返回任何东西,它的 结果 会是一个特殊的值,undefined。 你可以从下面的代码看到。 1 function

Go语言基础介绍

前提是你 提交于 2019-12-25 01:07:12
Go是一个开源的编程语言。Go语言被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。目前,Go最新发布版本为1.10. Go语言可以运行在Linux、FreeBSD、Mac OS X和Windows系统上。 1. 结构:Go语言的基础组成有以下几个部分:包声明、引入包、函数、变量、语句&表达式、注释。 (1)、必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main (2)、注释与C++相同,有单行注释即”//”和多行注释即”/* … */”两种。 (3)、当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出;标识符如果以小写字母开头,则对包外是不可见的,但是它们在整个包的内部是可见并且可用的。 2. 基础语法: (1)、Go标记:Go程序可以由多个标记组成,可以是关键字、标识符、常量、字符串、字符。 (2)、行分隔符:在Go程序中,一行代表一个语句结束。每个语句不需要像C++语言一样以分号”;”结尾,因为这些工作都将由Go编译器自动完成。如果你打算将多个语句写在同一行,它们必须使用”;”为区分,但在实际开发中我们并不鼓励这种做法。 (3)、注释:注释不会被编译,每一个包应该有相关注释。单行注释以”//

类的函数声明中“ const”最后的含义?

[亡魂溺海] 提交于 2019-12-24 17:38:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 像这样的声明中 const 的含义是什么? const 使我感到困惑。 class foobar { public: operator int () const; const char* foo() const; }; #1楼 当您使用 const 方法签名(像你说: const char* foo() const; )你告诉编译器内存指向 this 不能用这种方法来改变(这是 foo 这里)。 #2楼 C ++常识中 Const成员函数的含义 :基本中级编程 给出了明确的解释: X类的非常量成员函数中的this指针的类型为X * const。 也就是说,它是指向非常量X的常量指针(请参见常量指针和指向常量的指针[7,21])。 因为此对象所指向的对象不是const,所以可以对其进行修改。 在类X的const成员函数中,此类型为const X * const。 也就是说,它是指向常量X的常量指针。由于此对象所指向的对象是const,因此无法对其进行修改。 这就是const和非const成员函数之间的区别。 因此,在您的代码中: class foobar { public: operator int () const; const char* foo() const; }; 您可以这样认为: class

Javascript初识之数据类型

守給你的承諾、 提交于 2019-12-24 08:29:37
一、JavaScript概述 1、ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。 次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。 二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript是JavaScript的规格,JavaScript是ECMAScript的一种实现,在日常场合,这两个词是可以互换的。 javascript遵守ECMA指定的标准,换句话说javascript就是ECMAscript的方言。 2、ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009