JS | NodeJS和JS

303 阅读3分钟

1、JavaScript

JavaScript = ECMScript + DOM + BOM
ECMScript:语言基础,基本语法等
DOM:操作页面元素的方法(Document Object Model)(文档对象模型)
BOM:操作浏览器的方法(Browser Object Model)(浏览器对象模型)

//Dom相当于把html页面结构解析成一个对象,提供一个接口API,让你去操作所有的节点。
//原生js操作DOM就傻眼啦。后来出现了jquery,是一个js库,能够方便操作DOM等,后来出现了更为强大的前端三大主流框架。

2、Nodejs

ECMScript:语言基础,基本语法等
OS:操作系统
File:文件
Net:网络
Database:数据库

也就是基本语法是一样的。但功能完全不一样。

且nodejs可以单独运行,JavaScript需要基于HTML和浏览器。

3、JavaScript是解释型语言,也是动态语言

  • 编译型:通过编译器,将代码一次性“翻译”成可被该平台硬件执行的机器语言。编译生成的可执行程序可以脱离开发环境,在特定的平台上独立运行。(c\c++\go) 优点:一次性编译好,不用一边执行一边解释,性能更好

  • 半编译半解释型:如java的源代码先编译成class文件,这是字节码文件,然后JVM再解释执行class文件

  • 解释型:通过解释器,将源程序逐行解释成特定平台的机器代码并立即执行的语言(python/js) 优点修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

  • 动态类型语言:指在运行期间才去做数据类型检查(python\javascript)

  • 静态类型语言:数据类型是在编译其间确定的或者说运行之前确定的,编写代码的时候要明确确定变量的数据类型。(C\java)

    //这就是动态类型,不用事先确定好数据类型
    function func(a, b) {
      return a + b;
    }
    console.log(func("1", 21));
    console.log(func(1, 21));
    console.log(func("hello", "world"));
    // 输出
    // 121
    // 33
    // helloworld
    
  • 强类型语言:类型检查严格,偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double

  • 弱类型语言:是指类型检查更不严格,偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。

  • 动态语言:这是指在运行时代码可以根据某些条件改变自身结构的语言。 JavaScript在运行时新的函数、对象、甚至代码都可以被引进(eval)

  • 静态语言:运行时,代码不能改变了。 (要和静态/动态类型语言作区分)

4、js、ajax、rxjs、ts

ajax是基于javascript的一种技术,它主要用途是提供异步刷新(只刷新页面的一部分,而不是整个页面都刷新)。
所以说,直接在js中用ajax就完事了

RxJS是一个异步编程的库,同时它通过observable序列来实现基于事件的编程。

TypeScript 是 JavaScript 的一个超集。引入了类、模块的概念。

5、html中的js

建议把script标签放在</body>之前而不是head里面呢?为什么有时候我们访问DOM却访问不到呢?javascript代码是怎样的执行顺序?
当一个script标签被执行, 在它之前的HTML元素可以访问,之后的就不成。所以也就是为什么通常建议将script放在body结束标签之前,dom之后。

在html中嵌入javascript代码,两种形式:直接在页面嵌入JavaScript代码和包含外部的javascript文件(通过src属性)

遇到<script>时,会将控制权交给JavaScript引擎来解析JavaScript解析完毕后将控制权交还给浏览器渲染引擎。

<script>写到body标签内靠后比较好,因为JavaScript 会操作html元素, 如果在body加载完之前写JavaScript 会造成JavaScript 找不到页面元素