JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
特点: 1、解释性的脚本语言(代码不进行预编译) 与其他脚本语言一样,JavaScript也是一种解释性语言,它提供了非常方便的开发过程。JavaScript的基本语法结构与C、C++、Java非常相似。
2、基于对象 它也可以看作是一种面向对象的语言,这意味着JavaScript可以使用它创建的对象。因此,许多函数可以来自脚本环境中对象方法和脚本之间的交互。
3、简单而弱的类型 它的简单性主要体现在:第一,JavaScript是一个基于Java基本语句和控制流的简单而紧凑的设计,这是一个非常好的过渡,供用户学习Java或其他C语言编程语言。 而对于具有C语言编程能力的程序员来说,JavaScript非常容易使用;其次,它的变量TYP。ES是弱势阶级。类型1不使用严格的数据类型。
4、安全性 JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。
5、事件驱动 javascript以事件驱动的方式响应用户。通过在网页中执行操作生成的操作称为事件。例如,按下鼠标,移动窗口,选择菜单等都可以视为事件。当一个事件发生时,它可能会引起相应的事件响应并执行一些相应的脚本。这种机制称为“事件驱动”。
6、跨平台 JavaScript依赖于浏览器本身,与操作环境无关。只要计算机能运行浏览器,支持javascript浏览器,就可以正确执行,实现“一次写,环游世界”的梦想。 因此,javascript是一种可以嵌入到HTML文件中的新描述语言。JavaScript语言可以响应用户需求事件(例如表单输入),而不需要任何网络来回传输数据。因此,当用户输入数据时,数据可以由客户机应用程序直接处理,而不是由服务器处理。
(可选 let,const,var的区别? 变量提升? 暂时性死区?)
字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol 注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。 区别: var声明是全局作用域或函数作用域,而let和const是块作用域。 var变量可以在其范围内更新和重新声明; let变量可以被更新但不能重新声明; const变量既不能更新也不能重新声明。 它们都被提升到其作用域的顶端。 但是,虽然使用变量undefined初始化了var变量,但未初始化let和const变量。 尽管可以在不初始化的情况下声明var和let,但是在声明期间必须初始化const。
- let:
let 是块级作用域 块是由 {} 界定的代码块,大括号中有一个块.大括号内的任何内容都包含在一个块级作用域中.因此,在带有let的块中声明的变量仅可在该块中使用。 let 可以被修改但是不能被重新声明. 就像var一样,用let声明的变量可以在其范围内被修改。 但与var不同的是,let变量无法在其作用域内被重新声明。
const: const 不能被修改并且不能被重新声明 这意味着用const声明的变量的值保持不变。 不能修改或重新声明
变量提升是 JavaScript 的一种机制:在执行代码之前,变量和函数声明会移至其作用域的顶部。
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } 上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。 ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。 总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。
值类型被创建在栈上,引用类型被创建在堆上。 简单数据是储存在栈内, 复杂数据储存在堆内,在栈内生成十六进制索引,访问堆内数据时,是通过栈内的索引。
4. 阅读代码,判断结果,为什么?"11" + 2 - "3"?
109,因为+号进行了字符串拼接,-号是一种隐式转换
break: 完全结束一个循环; continue: 结束当前循环,执行下一次循环。