引言:任何语言的核心都必然会描述这门语言的最基本的工作原理,而描述的内容通常都要涉及这门语言的语法、操作符、数据类型、内置功能等用于构建复杂解决方案的基本概念。 今天我就这些基本的概念开始进行总结,由于有一些内容实在过于基础我就不重复赘述(这个总结并不适用于没学过JS的小伙伴看),而且基础概念的内容也很长,这里的篇幅也会 长一点,甚至下一个篇幅也有可能继续是这个内容,但是我会尽自己的能力去将总结的内容精简、更好的记录呈现出来。
区分大小写与关键字:
要理解第一个概念就是ECMAScript中的一切(变量、函数名和操作符)都区分大小写例如:test 与 Test是不一样的,且在命名时一定要注意不要采用关键字(JavaScript关键字)。
标识符:
所谓标识符就是指变量、函数、属性的名字,或者函数的参数。其规则是:第一个字符必须是一个字符、下划线、或者一个美元符号($),而其他的字符可以是字母、下划线、美元符号或数字。按照惯例,ECMAScript 标识符采用驼峰大小写格式,即第一个字母小写第二个大写(myTest)。虽然这不是强制必须,但是为了代码的优美,我个人还是比较推荐用这样的方式。
严格模式:
ECMAScript 5 引入了严格模式(strict model)的概念。顾名思义,严格模式就是为JavaScript 定义了一种不同的解析与执行模型(更规范,严谨)。在这种模式下ECMAScript 3中一些不确定的行为将得到处理。这里我就不多赘述,详情可以查看前面的链接,而后面的总结我也碰到严格模式下的各类情况讨论。那么进入严格模式的方式是:要在整个脚本中启用严格模式的话,可以在顶部添加 “use strict”。在函数采用严格模式:
function a(){
"use strict";
------函数体---
}
关键字与保留字:
没有var 声明的变量:
例如: function a(){
message="hi"; (没有用var 声明,会变成全局变量)。
}
test();
aler(message); // hi
这里省略了 var , message就成了全局变量,只要调用一次test(),就可以在函数外部任何地方可以访问到这个变量 但是这样的做法并不推荐,因为:1、局部作用域中定义的全部变量很难维护。 2、如果有意的忽略var 操作符,也会由于相应变量不会马上有定义而导致不必要的混乱,未经声明的变量赋值在严格模式下抛出 referenceError (引用错误, 对象表明一个不存在的变量被引用。)错误。(后面的总结会讲到关于JavaScript的变量与函数在执行前先会进行一个“ 变量 / 函数提升”)。
数据类型:
ECMAScript 中有种简单的数据类型: Undefined 、 Null 、Boolean 、Number 、String。
typeof 操作符 :
这是一个经常使用到的操作符,其作用就是检测给定变量的数据类型。有时候 typeof 操作符会返回一些令人迷惑,但是技术上正确的值,比如 (typeof null )会返回 object ,因为null 是一个空的引用对象。Safari 5及之前的版本,chrome 7 以及之前的版本会对正则表达式返回 function. 而其他浏览器这种情况下返回 object.
Undefined 与Null 的区别:
因为有时候我们碰到 (null == undefined 结果是true),这时候就会有人认为这两个是对等的关系,但是实质上,这二者的概念是不同的,如果您使用 (null === undefined 返回 false),就可以看出了,二者的类型是不同的。null 是object ,如果 定义的变量准备将来用于保存对象,那么最好将变量初始化为null 而不是其他的值。其实从字面路基上我们也可以看出不同,undefined 更多的可以是指一个变量声明但是没有定义。而null 则是一个对象是空(指针是空)这么一来,二者其实也已经很明显区分开来。
-----------------------------------------------------------------------------------
本节完,下一章继续对基础语法,数据类型等概念进行总结。
(这一节中,我的总结还是偏于基础了,而且也有很多知识点我用了链接的方式,比如"保留字。关键字”那里。不是说这些知识点不重要,而是的确其知识点量太多了,我再写出来不一定比别人总结的好,也还可能把排版弄乱让阅读体验不愉快。所以我希望阅读到的小伙伴,还是应给点击链接查看一下,在对自己的知识点进行梳理。关于这一块知识点的总结还是比较多的,有一些我实在无法进行客观的认知,即我到底应该总结成什么样子,所以只能按照自己认为的进行总结。之后我也会对自己所写的东西进行更多的慢慢修改。毕竟人也是在不断地进步的,希望能把自己的博客写好,让自己学习的同时,也能让看到我的博客的人看的愉快一些)。