JavaScript语言学习
基本概念
特点
- 借鉴c语言的基本语法
- 借鉴Java语言的数据类型和内存管理
- 借鉴scheme语言,将函数提升到“第一等公民”的地位
- 借鉴self语言,使用基于原型的继承机制
一些基本概念
作用域
体现变量的可访问性和可见性。通过静态作用域可以预测代码在执行过程中如何查找标识符。
变量提升
在 JavaScript 代码执行过程中,JavaScript 引擎把变量的声明部分和函数的声明部分提升到代码开头的行为。 变量被提升后,会给变量设置默认值为 undefined。var有变量提升,let、const没有变量提升。function函数可以先调用再定义。但赋值给变量的函数无法提前调用。
JS代码执行的过程
当JS引擎解析到可执行代码片段的时候,就会先做一些执行前的准备工作,成为执行上下文,也叫执行环境。
全局执行上下文:代码开始执行时就会创建,将他压执行栈的栈底,每个生命周期内只有一份。
函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成变量环境、词法环境等,函数执行结束时,该执行环境从栈顶弹出。
词法环境: 基于ECMAScript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成。
变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定而后者只用来存储var变量绑定。
Outer:指向外部变量环境的一个指针。
this
普通函数的this指向windows
- 对象调用指向对象 2.先赋值再调用,看调用的地方 4.创建临时对象 2将this指向临时对象 3.执行构造函数 4、返回临时对象
个人对JavaScript的见解
优点
JavaScript有许多优势,使用JavaScript的几个好处包括:
您不需要编译器,因为web浏览器使用HTML解释它;
它比其他编程语言更容易学习;
错误更容易发现,因此更容易纠正;
它可以分配给特定的网页元素或特定的事件,如单击或鼠标悬停;
JS可以跨多个浏览器、平台等工作;
可以使用JavaScript验证输入并减少手动数据检查的需要;
使网站更具互动性,吸引访问者的注意力;
它比其他编程语言更快、更轻量级。
弱点
容易受到攻击;
可用于在用户的计算机上执行恶意代码;
JS代码段相当大;
可以在不同的设备上以不同的方式呈现,从而导致展示效果不一致。