变量

在程序中将一个值指定(assign)给一个符号式的容器(symbolic container),叫做一个变量(variable)。

声明
在JS中目前提供了三种声明方式:

var

声明一个变量,可选择是否给予一个初始值。

作用范围(scope)于该函式之内;但是如果在函式外声明,其作用范围则为全局性(global)。

var price = 10;

price = price * 2;

console.log(price);

let(ES6新增)

声明一个内存块范围(scope)内的本地变量,可选择是否给予一个初始值。

let prices = 10;

if(prices === 10){

let prices = 20;

console.log(prices);// 20

}

console.log(prices);// 10

const(ES6新增)

声明一个只能读取内存块范围(scope)内的本地变量。

const price = 10;

console.log(price);//10

price = 20;//Uncaught TypeError: Assignment to constant variable.

如果在声明时候未给予值,JS会预设为undefined(除了const)

var a;

console.log(a)//undefined

let b;

console.log(b)//undefined

const c;

//Uncaught SyntaxError: Missing initializer in const declaration

命名规则

在命名时候需要注意下面几点规则:

开头不能数字

英文大小写是有区分的

不可使用保留字元

在MDN中有列出了哪些是JS的保留字元。

函式

程序拆解成可重复使用的片段

具名代码片段(a named section of code)可以藉由名称来呼叫执行。

可选择是否接受参数(arguments即参数(parameters))

声明
函式由三个关键字组成,依序是:

名称

参数列表

大括号{}

这边举个例子:

function totalPrice(number,price){

return number*price

}

totalPrice(2,20)

函式totalPrice使用了两个参数number和price,两着相乘后透过return回传其值。

函式通常会有回传值,但并非每种函式都需要回传值,也有可能利用输出的方式来输出结果。

function totalPrice(number,price){

console.log(number*price)

}

totalPrice(2,20)//40

在声明函式时可以选择不撰写名称,这将会使函式成为一个匿名函式,通常作为一个指定值,指定给一个变量后,该变量便成为了这个匿名函式的名称。

var total = function(number,price){

console.log(number*price)

}

total(2,20)//40

以函式作为参数传入

在JS中也能将函式做完参数传入到另一个函式,而且在函式的最后也可以回传函式。这种函式的结构称之为高阶函式(Higher-order function)。我们常听到的callback就是高阶函式的应用,不过这会在很后面才提到。在这边只需要了解函式也能当作参数即可。

var total = function(count,fn){

return fn(count)

}

var price = function(count){

return count * 20

}

console.log(total(10,price))//200

参考资料:

变量、常数与命名

https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part3/function_scope.html

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions

https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements

学习JS的心路历程-声明的更多相关文章

  1. 学习JS的心路历程-函式(一)

    前几天有间单提到该如何声明函式及在Hositing中会发生什么事,但是函式的奥妙不仅于此. 身为一个使用JS的工程师,我们一定要熟悉函式到比恋人还熟! 这几天将会把函式逐一扒开跟各位一起探讨其中的奥妙 ...

  2. 学习JS的心路历程-参数的传递(下)

    今天我们要来探讨JS到底是透过何种参数传递方式呢? 废话不多说,上示例!! 我们先声明原始型别和物件型别来看看两者是否会有不一样的差异: var myStr = 'Hola': var myObj = ...

  3. 学习JS的心路历程-参数传递方式(上)

    很多人认为JS的传递方式是值是Call by value, 物件及数组是Call by Reference.甚至还有人宣称其实JS是Call by sharing,那到底是哪一个呢? 这两天我们一一来 ...

  4. 学习JS的心路历程-范围Scope和提升(Hoisting)

    在上一篇提到了JS有三种声明变量的方式,分别是var.const及let,var和const let最大区别就是范围(scope)的限制.所以在这一篇我们会详谈何谓范围链及他们的复写优先级. 范围Sc ...

  5. 学习JS的心路历程-类型

    前言 之前学JS时候都是靠着谷狗一路跌跌撞撞的学过来,从来没有去翻过MDN的文件,导致留了许多技术债给自己. 最近有幸遇到一位前辈并开始从头学JS,前辈表示学程序不看文件是想作死自己?于是我的第一份功 ...

  6. 学JS的心路历程 -函式(三)this

    this是什么,取决于被呼叫的呼叫地点. 昨天有提到说,呼叫函式时候会传递隐含参数:arguments和this并讲解了arguments,今天我们就来探讨this吧! 什么是this 我们都会呼叫函 ...

  7. 学JS的心路历程-函式(二)arguments

    参数(argument)与函式参数(parameter) 在讨论函式时,很多人都会把这两个搞混,我自己也不例外. 虽然讲错别人也听得懂,但是我们还是要搞清楚这两个的定义到底是什么! 参数是当我们呼叫函 ...

  8. .net工程师学习vue的心路历程(一)

    实习一年后,想做一个属于自己的博客网站,准备用core api去搭建服务端接口,前端准备采用vue这样的一个框架.本身时一个服务端程序员,所以来学习记录一些vue的知识点,有什么不足的希望大家指正,谢 ...

  9. .net工程师学习vue的心路历程(三)

    vue cli3没记错的话是在2019年8月份yyx个人正式声明发布. 接下来就开始我们的vue cli3的方式创建vue项目.明白一点,vue cli3遵循的一个原则就是 "0配置&quo ...

随机推荐

  1. Mybatis实现in查询(注解形式和xml形式)

    1. @Select注解中使用in @Select({"<script> " + " select * "+ " from busines ...

  2. TessorFlow学习 之 手写数字识别的搭建

    手写数字识别的搭建

  3. Java实现图像对比类

    package com.function; import java.awt.image.BufferedImage; import java.io.BufferedWriter; import jav ...

  4. java 怎样向一个已存在的文件中添加内容

    如果想向某个文件最后添加内容,可使用FileWriter fw = new FileWriter("log.txt",true);在创建FileWriter时加个true就可以了. ...

  5. CMD命令行合并多个txt文件到一个txt文件

    运行->输入CMD回车 输入: Copy G:\MyFolder\*.txt  G:\NewFolder\a.txt 回车即可 意思是将G:\MyFolder\下的所有txt文本内容复制到G:\ ...

  6. NIO,OIO,AIO区别

    OIO中,每个线程只能处理一个channel(同步的,该线程和该channel绑定). 线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成,如图: NIO中,每个线 ...

  7. oracle添加列到指定位置

    http://blog.csdn.net/liufeng_king/article/details/7421826

  8. djangobb之forum.topics

    看djangobb源代码时,看到view的show_forum(request, forum_id, full=True)时,对于topics = forum.topics.order_by('-st ...

  9. win8换win7的操作方法

    详细参考UEFI与 Legacy BIOS两种启动模式详解  BIOS的两种引导模式 win8更换win7的方法的两个步骤:    (1).设置BIOS支持Legacy启动,具体目标就是设置secur ...

  10. 功能测试-UI测试思考点

    界面是否美观 元素大小 界面元素是否对齐方式统一 界面字体属性是否正确 界面链接及触发动作( 链接的地址是否正确,不允许存在死链的情况 链接打开方式,当前页面还是新开页面 鼠标点击后的颜色是否美观,不 ...