什么是 JavaScript 语言
JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序(比如浏览器)的“脚本”,本身不提供任何的 API,都要靠宿主环境(host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API。
JavaScript 的核心语法部分相当精简,只包括两个部分:基本的语法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各种功能的对象比如Array、Date、Math等)。除此之外,各种宿主环境提供额外的 API(即只能在该环境使用的接口),以便 JavaScript 调用。以浏览器为例,它提供的额外 API 可以分成三大类。
- 浏览器控制类:操作浏览器
- DOM 类:操作网页的各种元素
- Web 类:实现互联网的各种功能
JavaScript 与 Java 的关系
JavaScript 和 Java 的关系。它们是两种不一样的语言,但是彼此存在联系。JavaScript 的基本语法和对象体系,是模仿 Java 而设计的。但是,JavaScript 没有采用 Java 的静态类型。”。JavaScript 语言的函数是一种独立的数据类型,以及采用基于原型对象(prototype)的继承链。这是它与 Java 语法最大的两点区别。另外,Java 语言需要编译,而 JavaScript 语言则是运行时由解释器直接执行。
基本概念
语句
javascript以行为单位执行
语句是为了完成某种任务而进行的操作,如
var a = 1 + 3;
表达式
6+ 3就叫做表达式
语句与表达式的区别
前者主要为了进行某种操作,一般不需要返回值
后者是为了得到返回值,一定会返回一个值
变量
变量是对值的引用,使用变量等同于引用一个值
var a = 1
实际步骤是
var a;
a= 1;
变量提升
由于js引擎的工作方式,先解析代码获取所有被声明的变量,然后再一行一行的执行,这样就造成了,所有变量的声明语句,都会被提升到代码的头部,这就是变量提升
标识符
变量名就是最常见的标识符,规则如:
第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。
第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字0-9。
注意点
- JavaScript 的变量名区分大小写,A和a是两个不同的变量。
- 变量的声明和赋值,是分开的两个步骤, 如果只是声明变量而没有赋值,则该变量的值是undefined。undefined是一个特殊的值,表示“无定义”。
- 可以在同一条
var
命令中声明多个变量 - JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,变量可以随时更改类型
- 单行注释 //,多行 /* */ 之间
- 三元运算符
? :
,可以用于逻辑判断。(条件) ? 表达式
1: 表达式
2上面代码中,如果“条件”为
true
,则返回“表达式1”的值,否则返回“表达式2”的值。
数据类型
概述
- JavaScript 语言的每一个值,都属于某一种数据类型,共有六种.
- 数值(number):整数和小数(比如1和3.14)
- 字符串(string):字符组成的文本(比如"Hello World")
- 布尔值(boolean):true(真)和false(假)两个特定值
- undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
- null:表示无值,即此处的值就是“无”的状态。
- 对象(object):各种值组成的集合
其中数值,字符串,布尔值成为原始类型的值,undefined和null一般被视为特殊值,对象则为合成类型的值,往往由多个原始类型的值合成
typeof运算符
JavaScript有三种方法,可以确定一个值到底是什么类型。
- typeof运算符
- instanceof运算符
- Object.prototype.toString方法
typeof运算符可以返回一个值的数据类型,可能有以下结果:
(1)原始类型
数值、字符串、布尔值分别返回number、string、boolean。
(2)函数
函数返回function,虽然函数属于对象,但是typeof内部是将函数是返回function
(3)undefined
undefined返回undefined
(4)其他返回object
数组的类型也是object,这表示在JavaScript内部,数组本质上只是一种特殊的对象。
可以用instanceof运算符进行区分
布尔值
布尔值:true/false
下列运算符会返回布尔值:
- 二元逻辑运算符: &&(and), ||(or)
- 前置逻辑运算符: !(not)
- 相等运算符: ===, !==, !=
- 比较运算符: > ,>= ,< ,<=
下面这些值如果转化为布尔值则为false,其他都为true
- undefined
- null
- 0
- NaN
- '' ''/' ' (空字符串)
空数组( [] )和空对象( {} )转化为布尔值为true