1.JavaScript是什么
JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script 是脚本的意思),脚本语言:不需要编译,运行过程中由 js 解释器( js 引擎)逐行来进行解释并执行,不同于java需要编译后在执行,现在也可以基于 Node.js 技术进行服务器端编程
2.JavaScript应用在哪些地方?
表单动态校验(密码强度检测)( JS 产生最初的目的 )
网页特效
服务端开发(Node.js)
桌面程序(Electron)
App(Cordova)
控制硬件-物联网(Ruff)
游戏开发(cocos2d-js)
3.JS组成
(1)ECMAScript
ECMAScript是由ECMA 国际( 原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言 在万维网上应用广泛,它往往被称为 JavaScript或 JScript,但实际上后两者是ECMAScript 语言的实现和扩展。ECMAScript:规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
(2)DOM——文档对象模型
文档对象模型(DocumentObject Model,简称DOM),是W3C组织推荐的处理可扩展标记语言的标 准编程接口。通过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)
(3)BOM——浏览器对象模型
浏览器对象模型(Browser Object Model,简称BOM) 是指浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、 获取分辨率等。
4.JS重点知识点
(1)基本数据类型
不同于java,js只有五种数据类型(number,String,boolean,null,Undefined),number包含了整数类型和浮点数类型
Null和Undefined有什么区别吗?
null
表示一个对象被定义了,但存放了空指针,转换为数值时为0。undefined
表示声明的变量未初始化,转换为数值时为NAN。
(2)JS中变量的作用域是什么?
变量的作用域是程序中定义它的区域,JS变量只有两个作用域:
- 全局变量 :全局变量具有全局作用域,这意味着它在JS代码中的任何位置都可见
- 局部变量 :局部变量仅在定义它的函数中可见,函数参数始终是该函数的本地参数。
(3)let const var 有什么区别(重点)
区别一:作用域
用 var 声明的变量的作用域是它当前的执行上下文,即如果是在任何函数外面,则是全局执行上下文,如果在函数里面,则是当前函数执行上下文。换句话说,var 声明的变量的作用域只能是全局或者整个函数块的。
let 声明的变量的作用域则是它当前所处代码块,即它的作用域既可以是全局或者整个函数块,也可以是 if、while、switch等用{}限定的代码块。另外,var 和 let 的作用域规则都是一样的,其声明的变量只在其声明的块或子块中可用。
区别二:定义变量
var定义变量时,存在变量的默认提升功能,而let和const没有
var 定义变量是可以重复定义,而let和const不可以重复定义(同时定义一个变量时)
var定义变量时会自动挂载在Windows对象上,而let和const不会
let存在暂时死去问题
区别三:let与const区别
const声明的是一个只读变量,声明之后不允许改变其值,因此const一旦声明必须初始化,否则会报错
var可以重复赋值
<body>
<script>
var s=20;
if(true){
var s=10;
console.log(s);//10
}
console.log(s);//10
</script>
</body>
</html>
let定义的值只会存在于作用域范围内
<body>
<script>
var s=20;
if(true){
var s=10;
console.log(s);//10
}
console.log(s);//10
</script>
</body>
</html>
var会自动提升为全局变量,let和const不会
<body>
<script>
if(true){
var s=10;
}
console.log(s);//10
</script>
</body>
innerText和innerHTML的区别
获取内容时的区别: innerText会去除空格和换行,而innerHTML会保留空格和换行 设置内容时的区别: innerText不会识别html,而innerHTML会识别
<body>
<div></div>
<p>
我是文字
<span>123</span>
</p>
<script>
// innerText 和 innerHTML的区别
// 1. innerText 不识别html标签 非标准 去除空格和换行
var div = document.querySelector('div');
// div.innerText = '<strong>今天是:</strong> 2019';
// 2. innerHTML 识别html标签 W3C标准 保留空格和换行的
div.innerHTML = '<strong>今天是:</strong> 2019';
// 这两个属性是可读写的 可以获取元素里面的内容
var p = document.querySelector('p');
console.log(p.innerText);
console.log(p.innerHTML);
</script>
</body>