详解JavaScript(ECMAScript与DOM)(上)

简介: 详解JavaScript(ECMAScript与DOM)(上)

编译软件:IntelliJ IDEA 2019.2.4 x64

运行环境:Google浏览器

前言

前端大佬都在用的js,号称前端三大件的“JS" , 你真的了解吗?本文带你一览js之魅力,十分钟就可以让你快速上手JS。


一. 简介

JavaScript(简称 JS)是一种广泛用于客户端和服务器端 Web 开发的编程语言。它是一种动态类型、解释型语言,最初由网景公司(Netscape)开发,后来由 Ecma 国际组织标准化。JavaScript 的语法灵活,易于学习和使用,可以用于开发各种类型的 Web 应用程序,包括动态网页、单页应用程序、桌面应用程序、游戏、移动应用程序等。

JavaScript总共分成三部分: ECMAScript(基本语法)、BOM(浏览器对象模型)、DOM(文档对象模型)


二. js的特性

  • 脚本语言,它运行在客户端

JavaScript是一种解释型的脚本语言。不同于C、C++、Java等语言先编译后执行, JavaScript不会产生编译出来的字节码文件,而是在程序的运行过程中对源文件逐行进行解释。

  • 基于对象

JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。但是它并没有面向对象的三大特性。

  • 弱类型

JavaScript中虽然也有明确的数据类型,但是声明一个变量后它可以接收任何类型的数据,并且会在程序执行过程中根据上下文自动转换类型。

  • 事件驱动

JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。

  • 跨平台

JavaScript脚本语言依赖于浏览器的支持,只要有浏览器,JavaScript脚本语言可以在任意平台运行


三. js的Helloworld

需求: 在网页上创建一个按钮,当用户单击这个按钮的时候,给出一个警示框

代码演示如下:

  1. HTML代码
<input type="button" value="点我" id="btn02"/>
  1. js代码
    位置: head标签内
<script>
        window.onload=function () {
            var btn02=document.getElementById("btn02");
            btn02.onclick=function () {
                alert("你点到我了...");
            }
        }
</script>


四. js的引入方式

4.1 内部js的方式

注意:

  • script标签可以在html代码的任意位置
  • JavaScript代码要写在script标签内
  • 为了方便查询或操作HTML标签(元素),script标签可以写在body标签后面

代码解释:

<script>
  window.onload=function () {} 网页加载完后执行的函数
  var btn01=document.getElementByid("btn01");   从文档对象中根据id属性值获得一个Element(元素)
    btn01.onclick=function () {   为btn01这个元素绑定单击事件,当用户单击元素的时候,执行后面的函数
        alert("你点到我了...");  警示框,弹出文本信息给用户
    }
</script>

4.2 外部js的方式

步骤:

新建一个js文件(后缀名为.js的文件),将js代码写在js文件内,在html文件内引入js即可

注意:

  1. 引用外部JavaScript文件的script标签里面不能写JavaScript代码
  2. 先引入,再使用
  3. script标签不能写成单标签

代码演示如下:

window.onload=function () {
    var btn02=document.getElementById("btn02");
    btn02.onclick=function () {
        alert("你点到我了...");
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/js1.js"></script>
</head>
<body>
    <input type="button" value="点我" id="btn02"/>
</body>
</html>

注意:

如果此时script标签已经引入一个js 文件,那么该标签内的js代码将会失效,但是这个html文件可以引入多个script标签

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/js1.js">
      alert(100);
  </script>
    <script>
        alert(200);
    </script>
</head>
<body>
    <input type="button" value="点我" id="btn02"/>
</body>
</html>


五. js的数据类型

5.1 基本数据类型

数值型: number

JavaScript不区分整数、小数,例如10 29 1.5 1.34 …

字符串: String

JavaScript不区分字符、字符串,单引号与双引号意思一样。 例如 “10” “abc” ‘你好’ …

布尔型: boolean

在JavaScript中,其他类型和布尔类型都可以进行自动转换

true非零的数值,非空字符串,非空对象

false零,空字符串,null,undefined

注意:

在js中的if() 里,其他数据类型都可以和布尔型自动转化

空串/o/undefined/null/NaN都是false,其他都是true

特殊的值:undefined/null/NaN

5.2 引用数据类型

5.2.1 对象

  • 所有new出来的对象
  • 用{}声明的对象

5.2.1 数组

  • 用[]声明的数组

六. 变量的声明

  • 关键字var,其实ECMAScript6之后建议使用let
  • 数据类型JavaScript变量是弱类型的,可以接收任意类型的数据
  • 标识符严格区分大小写
  • 变量使用规则
  • 如果使用了一个没有声明的变量,那么会在运行时报错
    Uncaught ReferenceError: b is not defined
  • 如果声明一个变量没有初始化,那么这个变量的值就是undefined

6.1 声明方式一

语法:

var 变量名;

变量名=值;

代码演示如下:

var value;
 value="123";
 //console.log() 用于控制台输出
 console.log(value) ;
 //typeof 用于确定给定变量的数据类型并返回
 console.log(typeof value) ;

6.2 声明方式二

语法:

var 变量名=值;

代码演示如下:

var value="123";
 //console.log() 用于控制台输出
 console.log(value) ;
  //typeof 用于确定给定变量的数据类型并返回
 console.log(typeof value) ;


七. 函数

7.1 内置函数

  • 警示框
alert("警示内容");
  • 确认框,有返回值;确认是true,取消是false
confirm("提示内容");
  • 控制台打印日志
console.log("输出内容");

tips:

如何打开控制台并查看输出的内容?

打开任意浏览器,将光标置于你要查看的页面上,按“F12"打开开发者工具,在console那一栏就是

7.2 自定义函数

7.2.1 有名函数

位置:

script标签下

语法:

function方法名(形参列表){代码块}

①无参无返回值

function fun01(){
  console.log("这是fun01函数");
}

②有参无返回值

function fun02(a,b,c,d){
  console.1og("这是fun02函数"+a+b+c+d)
}

③有参有返回值

function fun03(a,b,c,d){
  console.log("这是fun02函数"+a+b+c+d);
  return值;
}

7.2.2 匿名函数

语法:

function(形参列表) {代码块}

应用场景:

a.在事件绑定位置

btn01.οnclick=function (){}

b.可以将函数看作是一个对象

var fun03=function(
  console.1og("这是fun03函数")
}

7.3函数的调用

语法:

var 变量名=函数名(实参列表)

代码演示如下:

//声明并创建函数f1,返回结果
         function f1() {
             return 23*12;
         }
         //定义变量result接收函数f1的返回值
         var result=f1();

注意:

实参少于形参,多出来的形参是未定义

实参多于形参,多出来的实参接收不到


八. 对象

JavaScript中没有『类』的概念,对于系统内置的对象可以直接创建使用

8.1通过new关键字创建对象

①声明创建对象

var obj01=new object();

②属性与属性值的设置

注意:

属性和属性值可以自由设置,你想设什么属性就设,想填什么属性值就填

代码演示如下:

obj01.id=101;
obj01.name="张三";
obj01.abc="北京";

或者这样设置属性值

代码演示如下

//设置属性值
obj01.stuName = "tom";
obj01.stuAge = 20;
obj01.stuSubject = "java";

③ 属性值的获取

代码演示如下:

console.log(obj01.id)
console.logtobj01.name)
console.log(obj01.abc)
console.log(obj01.age)

④ 对象中函数的设置

代码演示如下:

//对象obj01创建一个方法eat()
obj01.eat=function (){
  alert(this.name+"eat");
}

小tips:

this关键字只有两种情况:

  • 在函数外面this关键字指向window对象(代表当前浏览器窗口)
  • 在函数里面this关键字指向调用函数的对象

⑤函数的调用

代码演示如下:

obj01.eat();

8.2 通过{}创建对象

代码演示如下:

//声明创建对象
var obj02={
1d:102,
name:"李四",
age:18,
//创建函数eat
eat:function ()
alert("eat");
},
//创建函数run
run:function ()
alert("run");
}

ps:使用方式和8.1节一致,这里暂不赘述

相关文章
|
1月前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
18天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
19天前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
1月前
|
JavaScript 前端开发 编译器
掌握现代化JavaScript:ECMAScript提案与特性
【10月更文挑战第13天】本文介绍了ECMAScript(ES)的最新提案与特性,包括可选链、空值合并运算符、类字段和顶层Await等。通过跟踪TC39提案、使用Babel或TypeScript、测试兼容性以及逐步迁移,开发者可以高效地采用这些新特性,简化代码、提高开发效率并增强应用功能。文章还提供了实战技巧,帮助开发者在现代Web开发中充分利用这些现代化的特性。
|
1月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
60 4
|
2月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
20 5
|
2月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
30 4
|
1月前
|
JavaScript 前端开发 容器
js之dom学习
js之dom学习
38 0
|
1月前
|
JavaScript 前端开发 UED
【前端基础篇】JavaScript之DOM介绍2
【前端基础篇】JavaScript之DOM介绍
22 0
|
1月前
|
JavaScript 前端开发 搜索推荐
【前端基础篇】JavaScript之DOM介绍1
【前端基础篇】JavaScript之DOM介绍
34 0