JS基本概念和数据类型

语句

JavaScript 程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。

语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。

var a = 1 + 3;

  

这条语句先用var命令,声明了变量a,然后将1 + 3的运算结果赋值给变量a

1 + 3叫做表达式(expression),指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。凡是 JavaScript 语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。

变量

变量是对“值”的具名引用。变量就是为“值”起名,然后引用这个名字,就等同于引用这个值。变量的名字就是变量名。

简单说变量就是存储数据的容器

在JS中变量通过关键字"var"来创建,创建变量的过程称为"声明"

var b = 3;

  上面这段代码就是先声明了变量b,再将数值3赋值给变量b,以后引用变量b就会得到数值3。

变量提升

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。

例如这段代码:

var a = 4;

  我们可以这么理解为:

var a;
a = 4;

  

标识符

在JS中所有的可以由我们自主命名的都可以称为是标识符(identifier),最常见的标识符就是变量名和函数名。

标识符有自己的命名规则,在起名字时要符合如下规则命名,不符合规则的标识符就是非法标识符

1)第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。

2)第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9

3)标识符不能是ES中的关键字或保留字

1a    //不能以数字作为第一个字符
@qbb  //不能除了美元符号$和下划线_以外的符号作为第一个字符
ab^c    //中间不能包含除了美元符号$和下划线_以外的符号

  以上都是非法标识符

!中文是可以作为标识符的,因为符合Unicode编码方式

var 我是变量 = 1

  

注释

在JS中注释是不会被执行的,注释的作用就是对代码进行解释。JS有两种注释的方法:

//单行注释

/*
这是
多行
注释
*/

  

数据类型

JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)

  • 数值(number):整数和小数(比如13.14
  • 字符串(string):文本(比如Hello World)。
  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • null:表示空值,即此处的值为空。
  • 对象(object):各种值组成的集合。

通常,数值、字符串、布尔值这三种类型,合称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。对象则称为合成类型(complex type)的值(或叫作引用类型),因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefinednull,一般将它们看成两个特殊值。

对象是最复杂的数据类型,又可以分成三个子类型。

  • 狭义的对象(object) (键值对类型的)
  • 数组(array)
  • 函数(function)

typeof 运算符

我们可以用typeof 运算符来判断一个值返回哪种数据类型

数值、字符串、布尔值分别返回numberstringboolean

typeof 123     //"number"
typeof 'hello'  //"string"
typeof true    //"boolean"

  

undefined返回undefined

typeof undefined  //"undefined"

  

null返回object

typeof null //"object"

  

对象和数组返回object

typeof []  //"object"
typeof {} //"object"

  

函数返回function

function f(){}
typeof f(){}  //"function"

  

原文地址:https://www.cnblogs.com/ianyanyzx/p/9470197.html