JavaScript的基本概念、基础语法(数据类型、运算符)

2017-05-02  本文已影响0人  草鞋弟

1、什么是JavaScript?

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为NetscapeSun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与SelfScheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript

以上摘自百度百科,从这段论述我们可以看出JavaScript:

2、JavaScript的基本构成

英语语法是针对英语语言进行研究后,系统地总结归纳出来的一系列语言规则。语法是组词造句的规则,是把合适的词放进合适位置的语言(句子)规则,语法可以分成为两大部分:分别为词法和句法。词法包括各类词的形态及其变化,句法主要讲句子的种类和类型,句子成分以及遣词造句的规律。语法的精髓在于掌握语言的使用。

以上摘自百度百科(英语语法的定义),从这段论述我们可以看出英文的语法实质上:

标示符与关键字

虽然自然语言和编程语言有一定差异,但我个人感觉原理上的东西应该是想通的,JavaScript作为一门脚本语言,它的基本构成部分应该就是标示符与语句。标示符类似于英文中的单词,而语言类似于英文中的短语,当然各自的功能是不同

另外需要注意关键字和保留字!

变量的输出方式

输出变量的方式主要有四种:alert(),console.log(),document.write,document.title;

语句(statement)

3、数据类型及分类

JavaScript语言的每一个值,都属于某一种数据类型。JavaScript的数据类型,共有六种。

原始类型和复杂类型

字符串类型

js中双引号与单引号包裹的字符,都是字符串数据类型,但是与php不同的是,双引号并不能够解析变量;


字符串类型

undefined数据类型

使用var声明变量但是未对其进行初始化时,该变量的值就是undefined;

简单实例1

也就是说变量声明了,但是未初始化,此时变量默认的值就是undefined;

Null数据类型

从逻辑角度来看,null值表示一个空对象指针,因此使用typeof操作符检测的null的时候,返回的都是object;


typeof检测null返回的是object

如果定义的变量准备在将来保存对象,则最好将该变量初始化为null而 不是其他值;

布尔类型(boolean)

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值;

下列运算符会返回布尔值:

在这里需要注意的是:如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true:

需要特别注意的是这几种特殊情况

需要特别注意的是,空数组([])和空对象({})以及字符串"0"对应的布尔值,都是true。

Object

对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。key我们称为对象的属性,value可以是任何JavaScript类型,甚至可以是对象.
对象可以这么写:
var o = new object(); o.name = 'wuyanwen'; o.age = '24 ;'
但是更加常用 的写法是这样的
var o ={ name: ' wuyanwen'; age: '24 '; }
key可以使用引号包裹,也可以直接写,对象有一个默认的方法toString,用来返回对象的字符串表示,如下所示:

4、运算符

赋值运算符用于给变量赋值,最常见的赋值运算符,当然就是等号,表达式x=y表示将y赋值给x。除此之外,JavaScript还提供其他11个赋值运算符。

比较运算符比较两个值,然后返回一个布尔值,表示是否满足比较条件。JavaScript提供了8个比较运算符。

在JavaScript中,圆括号是一种运算符,它有两种用法:

void运算符的作用是执行一个表达式,然后返回undefined。

逗号运算符用于对两个表达式求值,并返回后一个表达式的值。

5、运算符优先级和结合性

有的运算符左结合,有的运算符右结合。

详细参考

复习部分:

1、JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?

JavaScript定义了6种数据类型,其中number、string、boolean为原始类型,而对象(Object)是复杂类型,原始类型和复杂类型的区别主要在于原始类型不可以再进行数据类型的分类,而复杂类型比如说对象(Object)一般是几个原始类型值的组合。

2、typeof和instanceof的作用和区别?

JavaScript有三种方法可以确定一个值到底是什么数据类型:

  1. typeof运算符;
  2. instanceof运算符;
  3. Object.prototype.toString方法;
利用typeof运算符确定原始类型数据类型.jpg 利用typeof运算符确定原始类型数据类型.jpg

instanceof运算符:
instanceof用于判断一个变量是否某个对象的实例,运算符返回一个布尔值。instanceof只能用来判断对象和函数,不能用来判断字符串和数字等。(这部分留待后续进行深入的研究)

3、如何判断一个变量是否是数字、字符串、布尔、函数?

我们可以利用typeof运算符来判断一个变量的数据类型。

4、NaN是什么? 有什么特别之处?

NaN即为Not a Number,表示是一个非数字,NaN与任何值都不相等,包括它自己。NaN是属于数字类型的。

5、如何把非数值转化为数值?

有三个函数可以将非数值转换为数值:

三种将非数值转化为数值的方法.jpg

6、==与===有什么区别?

== 叫做相等运算符;
=== 叫做严格运算符;
严格运算符(===)的运算规则如下:

相等运算符(==)在比较相同类型的数据时,与严格相等运算符完全一样;
在比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相当呢个运算符比较。

建议使用严格相等符(===),这样能够减少代码的其他异常问题。

知乎的相关讨论

7、break与continue有什么区别

break与continue两个英文意思一个是破坏,一个是持续,两者区别可以这样理解:

假如工厂存在一条循环回用流水线,当执行到某工段的时候break了,整条循环回用生产线直接全线停产,执行后续生产线的的工作内容,(相当于跳出了这个循环);

而continue则是执行到某工段后,满足了某个特定条件 ,直接略过循环生产线的后续工作内容,再次从头开始.
这么说可能太抽象了,还是举两个例子吧!
for(var i = 1; i< 10; i++){ if(i % 4 === 0){ break; } console.log(i); }

for(var i = 1; i< 10; i++){ if(i % 4 === 0){ continue; } console.log(i); } console.log("continue略过了i===4的阶段,执行后续的循环,循环结束后,执行循环体后操作")

image.png

8.void 0 和 undefined在使用场景上有什么区别?

void 0 的值永远都是undefined,而undefined在某些时候可以被赋值,如果需要判断一个变量的值是否为undefined,用void 0 比较有保证

9.

10.

11.

12.

13.

14.1

14.2

14.3

14.4

上一篇 下一篇

猜你喜欢

热点阅读