1)ECMAScript是一个标准,然后被广泛应用于浏览器的客户端脚本,它的表现形式有JavaScript、JScript和ActionScript
ECMAScript标准是不断的更新发展,比如在ES6中就有:类、模块、块级作用域(let const)、箭头函数等
2)Javacript 是ECMAScript 实现的一种脚本语言,运行在浏览器端的脚本语言,一般是用来做客户端页面的交互,一个完整的JavaScript由3个不同的部分组成:ECMAScript DOM BOM
javascript的运行环境
javascript的运行环境是运行在浏览器内核中的JS引擎
js只可以运行在浏览器中吗?
不是
js能运行在浏览器中,是因为浏览器为其提供了Js引擎
js能运行在哪,取决于这个环境有没有特定的平台(有没有提供JS引擎)
浏览器的作用:
1)作请求和响应的(打开浏览器,在地址栏输入地址,输入enter):请求一个HTTP地址(封装一个请求报文),浏览器最大的一个作用就是将一个URL地址封装成一个请求报文
2)解析服务器返回来的响应报文(内容有可能不一样)
渲染引擎的作用:html => 渲染HTML css => 渲染css image => 渲染image
js引擎的作用: js => 执行(解析)js
运行在浏览器中的js能做什么?
1)操作DOM(对DOM增删改、注册事件)
2)AJAX操作/跨域
3)BOM( 页面跳转、历史记录、console.log() 、alert() )
4)ECMAScript
运行在浏览器中的js不能做什么?
1)不能对文件操作(文件的增删改查CDUR)
2)没有办法操作系统
3)没有办法操作网络
为什么没有上面的功能
由于js运行环境特殊(js运行在浏览器的js引擎中,写的代码是在不认识的人的浏览器中运行),比如说在服务器上写了一个js文件,由于js并不是在服务器上执行,而是在客户端执行,客户端在一开始的时候发送了一个index.js的请求,请求完之后拿到这个文件,在浏览器的执行引擎里面执行indx.js,相当于他要是有这个功能的话,这个js文件,只要是客户端请求了,就能操作操作系统的信息,读取本地文件这是有问题的。对于用户访问一个网页是无感知的,它不知道网页背后做了什么,万一Js读了一个文件,把文件信息发出去了,对这个文件而言,就是一个隐形的暴露。所以说最早的时候,不是不能做,由于运行环境比较特殊,没法做
在开发人员能力相同的情况下,编程语言的能力取决于什么?
1)语言本身只是提供定义变量,定义函数,定义类型、流程控制、循环结构之类的操作
2)编程语言的能力取决于运行该语言的平台(环境)
3)对于js而言,我们常说的Js实际是ECMAScript,大部分能力都是由浏览器的执行引擎决定的
4)BOM和DOM是浏览器开放出来的API
Cordova平台提供JS调用摄像头,操作本地文件的API
JAVA:1)java既是语言也是平台 2)java运行在java虚拟机上面,java虚拟机可以跨平台,所以不需要运行在多个平台上(跑java代码的)(唯一的运行平台)
C#语言:平台 .net framework,也可以运行在MONO平台上(有人需要将C#运行在Linux平台上,所以出现了MONO)
PHP:既是语言也是平台,只能运行在PHP平台上(PHP可以跨操作系统)