JavaScript基础

JavaScript 从 Java 中借用其大部分语法,但也受 Awk,Perl 和 Python的影响。 JavaScript是区分大小写的,并使用 Unicode字符集。在JavaScript中,指令被称为  statements,并用分号 (;)分隔。空格、制表符和换行符被称为空白字符。JavaScript 脚本的源文本是从左到右扫描,并将其转换成由 tokens(不可分割的词法单位)、控制字符、行终止符、注释或空白符组成的输入元素序列。ECMAScript 还定义了某些关键字和字面量,规定了如何自动插入分号(ASI)来结束语句。

javascriptr粗略理解为:ECMAScript语法+DOM+BOM.

javascript语言可以识别7种不同类型的值:

 

    • Boolean.  布尔值,true 和 false.
    • null. 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此 null 与 NullNULL或其他变量完全不同。
    • undefined.  变量未定义时的属性。
    • Number.  表示数字,例如: 42 或者 3.14159。
    • String.  表示字符串,例如:"Howdy"
    • Symbol ( 在 ECMAScript 6 中新添加的类型).。一种数据类型,它的实例是唯一且不可改变的。
  • 以及 Object 对象
  • Object和function是js语言的其他两个基本要素。function本质也是一种对象。可以通过new function()生成函数实例

 

它的执行过程为先由javascript解释器“预编译”再执行。

当JavaScript引擎解析脚本时,它会在预编译期对所有声明的变量和函数进行处理。

做如下处理:

1. 在执行前会进行类似“预编译”的操作:首先会创建一个当前执行环境下的

活动对象,并将那些用var申明的变量设置为活动对象的属性,但是此时这些变量的赋值都是undefined,并将那些以function定义的函数也添加为活动对象的属性,而且它们的值正是函数的定义。

2. 在解释执行阶段,遇到变量需要解析时,会首先从当前执行环境的活动对象中查找,如果没有找到而且该执行环境的拥有者有prototype属性时则会从prototype链中查找,否则将会按照作用域链查找。遇到var a = ...这样的语句时会给相应的变量进行赋值(注意:变量的赋值是在解释执行阶段完成的,如果在这之前使用变量,它的值会是undefined)

JS全局中的解析和执行过程:

预处理:创建一个词法环境(LexicalEnvironment,在后面简写为LE),扫描JS中的用声明的方式声明的函数,用var定义的变量并将它们加到预处理阶段的词法环境中去。

这些基础概念涉及到对于作用域链的理解,可以多了解下这里面的概念有助于自身更好的学习javascript.

 

 

posted @ 2017-04-28 10:57  不抽烟的小程序员  阅读(103)  评论(0)    收藏  举报