博客内容整理来自:JavaScript高级程序设计第三版
区分大小写
ECMAScript中的一切(变量名,函数,操作符)都区分大小写;
例如:var test=1; var TEXT=2;
变量 test和TEXT完成是两个变量,他们的名字一样,但是本质不同,例如同名的两个人;
函数名不能使用typeof ,typeof是一个保留字;而typeof则是一个有效的函数名;
标识符
标识符也就是变量、函数,属性的名字;
标识符的规则:
第一个字符必须是:字母或者_或者
(美元符号);其他字符:可以是字母、(下划线)、
(美元符号)、数字;
标识符也可以使用ASCII或Unicode字母字符,但不是推荐这么做!
标识符一般采用驼峰命大小写格式;
例如:myName
每次有意义的单词首字母大写;
注释
JavaScript的注释方式有三种:
1.
//
2.
/* */
3.
/*
*
*
*/
第三种你也可以不写中间的*:
/*
*/
语句
ECMAScript语句使用;结尾,如果省略,则由解析器确定语句的结尾;虽然可以不写;结尾,但是我们不推荐省略;这样不利于代码的压缩和代码的性能;
多条语句可以组合放在一个代码块中;代码有{开始,}结束;
function (){
var a = 1;
console.log(a)
}
关键字和保留字
变量
ECMAScript的变量是松散类型的,
所谓的松散类型,就是可以保存任何类型的数据;
每个变量仅仅是用于保存值的占位符而已,定义变量要使用var;不使用var定义的变量是全局变量(也就是window对象);我们不推荐全局对象,这样会操作全局污染,不利于代码的维护;
var 后面跟变量名(也就是标识符);
只声明变量而没有初始化该变量,会保存一个特殊的值undefined;
var a;
console.log(a)//undefined
var b =1;
console.log(b);//1
变量只是一个保存值的占位置,也就是说,它不会保存数据的类型;
var a = "hi",
a = 1;
console.log(typeof(1));
初始化变量a的时候,值为字符串,而后面又重新赋值为number,(虽然这可以但是我们不推荐这样做);
局部变量和全局变量:
局部变量为在代码块中问声明的变量,它有自己的作用于,即为声明它所在的代码块,在声明它的代码块外获取变量,会报错;
function xyd(){
var a = 1;
}
console.log(a)//Uncaught ReferenceError: a is not defined
全局变量:
没有使用var 声明的变量;或者在全局下声明:
var b =1;
function xyd(){
b = 2;
}
这里变量b(var b =1 和 函数xyd()中的变量b)都为全局变量;
当允许函数xyd后,你会发现:
var b =1;
function xyd(){
b = 2;
}
xyd();
console.log(b)//2
var b 为全局变量;
函数xyd中变量b没有使用var 声明,为全局变量;
所以运行函数xyd(),变量b被重新赋值;
一条语句可以声明多个变量,用逗号(,)隔开:
var a = 1, b = 2, c = 3;
数据类型
undefined
boolean
string
number
object
function
ES6引入了第七种数据类型:Symbol
typeof 操作符
由于ECMA变量是松散类型的,也就是说,变量只是一个保存数据的占位符,它不会保存数据的类型,当我们需要查看一个数据的类型时,就用到了typeof操作符;
返回以下的数据类型:
“String” 字符串
“number” 数值
“boolean” true/false 布尔值
“function” 函数
“undefined” 未定义
“object” 对象
函数在ECMAScript中式一个对象,但是函数有一些特殊属性,因此用typeof区分函数和其他对象是有必要的;
undefined
undefined代表未定义的意思,即声明了一个变量但是没有初始化该变量, 该变量的默认值就为undefined;
var a;
console.log(a);//undefined
如果你使用一个没有声明的变量,则会报错;
console.log(a);//Uncaught ReferenceError: a is not defined
如果你在严格模式中,去使用个未声明的变量,则会报错;
如果使用 typeof 去返回数据类型,未声明的变量和未初始化的变量 都会返回一个undefined,
var a ;
console.log(typeof (a));
console.log(typeof (b));
变量a由于只是声明变量没有初始化变量,所有返回undefined,
而b没有声明变量,也返回了一个undefined,
## null类型 ##
null代表一个空对象,也就是我们typeof null 时会返回一个object;
console.log(typeof (null));
## undefined和null的区别 ##
实际上undefined的值时派生自null的值,ECMAscript-262规定对它们的相等性返回true,
console.log(null == undefined);//true
他们的语义是不同的,
null表示一个”空值“;
undefined表示未定义即不存在;
定义一个变量为空值是合理的,
var object.name = null;这里的object对象的属性为空值,而不是未定义。
.如果显示定义一个变量等于 undefined,这个任何情况下都是不合理的,引用一个未定义的变量,本身就是错误的。
## Boolean类型 ##
Boolean类型只有两个字面量,true和falsee;
返回的类型取决于原始数据的类型;
任何数据类型调用Boolean()函数都返回一个Boolean值;
if语句会自动调用Boolean函数,返回一个Boolean值;