笔记3-javascript基本概念
一.语法
1.1 ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
1.2 标识符:指变量、函数、属性的名字,或者函数的参数。ECMAScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写
1.3 严格模式:为JavaScript定义了一种不同的解析与执行模型。在严格模式下,ECMAScript3中的一些不确定行为将得到处理,而且对某些不安全的操作会抛出错误。
在整个脚本文件中启用严格模式,可以在顶部添加如下代码:
“use strict”;
这行代码看起来像字符串,而且也没有赋值给任何变量,但其实它是一个编译指示(pragma),用于告诉支持的JavaScript引擎切换到严格模式。
二.变量
ECMAScript的变量是松散类型的。所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。
var message;
这行代码定义了一个名为message的变量,该变量可以用来保存任何值(像这样未经过初始化的变量,会保存一个特殊的值——underfined)。ECMAScript也支持直接初始化变量:
var message=“hello world”
像这样初始化变量并不会把它标记为字符串类型,初始化的过程就是给变量赋值那么简单。
注:给未经申明的变量赋值在严格模式下会导致抛出ReferenceError错误。
三.数据类型
3.1 typeof操作符:检测给定变量的数据类型
typeof的操作数可以是变量:typeof(message)也可以是数值字面量:typeof(98);
typeof是一个操作符而不是一个函数,因此typeof()中的()可以使用但不是必须的。
注:
调用typeof null会返回object,因为特:殊值null会被认为是一个空的对象引用。
从技术角度讲,函数在ECMAScript中是对象,不是一种数据类型。然而函数也确实有一些特殊的属性。因此通过typeof操作符来区分函数和其他对象是有必要的。
3.2 Underfined类型
underfined类型只有一个值,即特殊的underfined。在使用var申明变量但未对其进行初始化时,这个变量的值就是underfined,例如:
var message;
此时message的值为underfined
注:
字面值underfined的主要目的是用于比较,而ECMS-262第3版中并没有规定这个值,第3版引入这个值是为了正式区分空对象指针与未经初始化的变量。
对未初始化和未声明的变量执行typeof操作符都返回了underfined值
3.3 Null类型
null是第二个只有一个值的数据类型,这个特殊的值是null
从逻辑角度来看,null值表示一个空对象指针
实际上underfined值是派生自null值的,因此ECMS-262规定他们的相等性测试要返回true:
alert(null == underfined); //true
这里null和underfined之间的操作符“==”总是返回true,不过要注意的是,这个操作符处于比较的目的会转换为其操作数。
注意:
只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和underfined
3.4 Number类型
3.4.1 浮点数值
如果小数点后面没有跟任何数字,那么这个数值就可以作为整数值来保存。
如果浮点数值本身表示的就是一个整数(如1.0),那么该值也会被转换为整数
var floatNum1=1. ; //小数点后面没有数字,解析为1
varfloatNum2=10.0; //整数——解析为10
数值范围问题:
如果某次计算的结果得到了一个超出JavaScript数值范围的值,那么这个数值将自动被转换成特殊的Infinity值
要想确定一个数值是不是有穷的,可以使用isFinite()函数。这个函数在参数位于最小与最大数值之间时会返回true
Number.MIN_VALUE:表示最小数值
Number.MAX_VALUE:表示最大数值
3.5 NAN
NAN用于表示一个本来要返回数值的操作数未返回数值的情况
在ECMAScript中任何数值除以非数值会返回NAN
两大特点:
- 任何涉及NAN的操作(例如 NaN/10)都会返回NAN
- NaN与任何值都不相等,包括NaN本身
任何不能被转换为数值的值都会导致这个函数返回true:
alert(isNaN(NaN)) //true
alert(isNaN(10)) //false(10是一个整数)
alert(isNaN(“blue”)) //true(不能被转换为数值)
数值转换:
parseFloat()只解析十进制值,始终都忽略前导0
3.6 String类型
字符串的特点:字符串的长度是不可变的,也就是说,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量:
var lang=“Java”;
lang=lang+“Script”;
以上失利中的变量lang开始时包含字符串"Java”。而第二行代码把lang的值重新定义为“JavaScript”。实现这个操作的过程如下:
首先创建一个能容纳10个字符“”的新字符串,然后在这个字符串中填充“Java”和"script
”,最后一步是销毁原来的字符串“Java”和字符串“Script”,因为这两个字符串已经没有用了。
注:
每个字符串(数值、布尔值、字符串值)都有一个toString()方法,该方法返回字符串的一个副本,但null和underfined没有toString()方法
3.7 Object类型
ECMAScript中的对象其实就是一组数据和功能的集合
Object类型所具有的任何属性和方法也同样存在于更具体的对象中
在ECMAScript中object是所有对象的基础
- JavaScript高级程序设计之基本概念之关系操作符第3.5.6讲笔记
- JavaScript高级程序设计之基本概念之函数第3.7讲笔记
- JavaScript高级程序设计之基本概念之数据类型第3.4讲笔记
- JavaScript高级程序设计之基本概念之相等操作符第3.5.7讲笔记
- JavaScript 高级程序设计——第三章基本概念 学习笔记
- JavaScript学习笔记①---基本概念
- JavaScript高级程序设计之基本概念之相等操作符第3.5.8讲笔记
- javascript高级程序设计笔记-第三章(基本概念)
- JavaScript高级程序设计之基本概念之语法 第3.1讲笔记
- JavaScript入门学习笔记(1)—— 基本概念
- JavaScript学习笔记(一)基本概念及语法
- javascript高级编程笔记02(基本概念)
- JavaScript高级程序设计之基本概念之关键字和保留字 第3.2讲笔记
- javascript高级程序设计第三版 第3章 基本概念 学习笔记
- JavaScript基础笔记(一)基本概念
- JavaScript高级程序设计之基本概念之变量第3.3讲笔记
- javascript高级程序设计(第三版)-第二章 基本概念-学习笔记
- JavaScript高级程序设计学习笔记--基本概念
- 笔记--JavaScript高级程序设计第三章基本概念
- JavaScript高级程序设计之基本概念之操作符之一元操作符第3.5.1讲笔记