博客列表 >【JS基础入门】初识JavaScript是什么?

【JS基础入门】初识JavaScript是什么?

 一纸荒凉* Armani
 一纸荒凉* Armani原创
2021年03月31日 17:38:401251浏览

一、JavaScript简介

1.1网页分层

名称 描述
结构层 HTML 负责搭建页面结构
样式层 CSS 责页面的美观
为层 JavaScript 负责页面的交互效果,提高用户体验

1.2 JavaScript诞生

JavaScript一种轻量级的脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态效果。JS在web浏览器端的地位,无人可以撼动;

【作用】:数据验证、读写HTML元素、前后台数据交互、网页交互效果、WEB游戏制作、桌面应用开发(electron)、基于Node.js技术服务器端开发。

Javscript,JScript,ActionScript等脚本语言都是基于ECMAScript标准实现的。

在JavaScript,JScript和ActionScript中声明变量,操作数组等语法完全一样,因为它们都是ECMAScript。但是在操作浏览器对象等方面又有各自独特的方法,这些都是各自语言的扩展。

JavaScript是由ECMAScript,DOM和BOM三者组成的。

  • ECMAScript是一种标准,描述了该语言的语法和基本对象。

  • 文档对象模型(Document Object Model简称DOM),描述处理网页内容的方法和接口。

  • 浏览器对象模型(Browser Object Model简称BOM),描述与浏览器进行交互的方法和接口。


简单来说ECMAScript不是一门语言,而是一个标准。ECMAScript是JavaScript的标准,现在我们学习的版本的ECMAScript4、5。

ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强。但是,浏览器的厂商不能那么快的去追上这个标准。这些新的特性。

那么ECMAScript2015之前我们统称为ES5,在2016的版本我们统称为ES6


1.3 总结

学习:语言核心、DOM、BOM、页面特效

  • ECMAscript 是JavaScript语言的标准
    基本语法、变量、常量、流程控制、对象……

  • DOM 通过JavaScript操作网页元素
    DOcument Object Model 文档对象模型,规定了HTML/XML文档的编程接口(API)

  • BOM 通过API(应用程序接口)操作浏览器
    Browser Object Model 浏览器对象模型,规定了操作浏览器中的对象的API


1.4 学习方法

● 要多去“品”程序,多去思考内在逻辑,读懂每一行代码!
● JS机械重复性的劳动几乎为0,基本都是创造性的劳动。HTML、CSS都是重复的劳动,margin、padding挤来挤去。
● 永远不要背程序,每一个程序都必须自己会写。

好学的点是什么:

  • JavaScript是有界面效果:不像C语言,黑底白字,很枯燥的。
  • JavaScript的语法来源于C和Java:有C和Java的经验同学好学很多。
  • JavaScript是弱变量类型的语言,动态数据类型语言。
  • JavaScript运行在宿主环境中,不关心内存,垃圾回收。

不好学的点是什么:

兼容性问题: IE8是个怪胎,很多东西都不一样,所以就要写兼容写法,不怕造轮子,多写几遍

花式写法很多,抽象:从简单入手,细细品味代码


二、JavaScript基本语法

2.1 JavaScript书写位置

这事儿吧,挺有意思,就是学习任何的语言,我们都喜欢在屏幕上直接输出一点什么,当做最简单、最基本的案例。输出什么大家随意,但是很多人都习惯输出“hello world”,世界你好。感觉自己很有情怀的样子。

  1. <script>
  2. alert("hello world!");
  3. </script>

初学者在学习js时,一般将JS代码写在HTML结构中,书写位置在一对script标签内。标签书写位置可以是HTML结构中的任意位置。


2.2JavaScript的三种引入方式

  • 行内引入
    行内引入方式必须结合元素的事件来使用,但是内部js和外部js可以不结合事件
    <button οnclick="alert('点击了我')">点击我</button>

  • 内部引入
    在head或body中,定义script标签,然后在script标签里面写js代码

  1. <script>
  2. alert("这是js的内部引入");
  3. </script>
  • 外部引入

定义外部js文件(.js结尾的文件)

  1. <script type="text/javascript" src="demo.js"></script>

注意:script标签要单独使用,要么引入外部js,要么定义内部js,不要混搭使用,就算在外部引入标签内编写代码也不会起作用。


2.3文件的加载和执行方式

浏览器顺序读取到html中的script标签,就从服务端加载js文件,每载入一个文件就立刻执行并且不是异步的——会阻塞后面页面的后续内容,这意味着浏览器会按顺序串行的加载并执行js文件,且此时后续dom对象的创建渲染以及其他资源的下载都无法执行。如果引入的js文件试图操作后面才出现的dom元素,浏览器是找不到该元素的,于是报错。
所以,保险起见,我们可以将script放到最后引入。

  • 默认同步加载
    浏览器在解析HTML文档的时候,一旦遇到script标签就会中断当前页面的解析,去下载js,下载执行完代码之后,再继续解析后面的HTML代码
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>初始JavaScript</title>
  7. <script>
  8. alert("我会停止页面加载……")
  9. </script>
  10. </head>
  11. <body>
  12. <h1>我是一个大标题</h1>
  13. </body>
  14. </html>

如果将js代码放到头部,首页就会执行js代码,由于弹出了alert从而阻塞了页面的加载

关闭alert弹窗才会继续加载页面


  • 使用异步加载


从图中我们可以看出,我们虽然编写了js代码,但并没有使文本变色,这是因为此时DOM结构还没有加载完成,要想正确的执行代码,我们可以将js代码放到文档的最后面就可以正常执行了。

如果又不想放在页面最后,而且能够正常执行JavaScript代码,我们可以给script标签添加defer属性,可以将一个外部的js脚本进行延迟执行(等待HTML的DOM树创建完成)

<script defer src="demo.js"></script>

当然,如果使用script标签的async属性或defer属性,那么:

  • async:只关心js脚本的下载不断中断HTML的解析就行,只实现了下载js与解析HTML的同步(当页面继续进行解析时,脚本将被执行)
  • defer:脚本将在页面完成解析时才执行
  • 选择的依据:defer涉及到dom操作或对js的执行顺序有要求,async对脚本顺序无要求,只要求快速一点下载
  • 如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

推荐写法:统一放到body标签结束之前

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>初始JavaScript</title>
  7. </head>
  8. <body>
  9. <h1>我是一个大标题</h1>
  10. <script src="demo.js"></script>
  11. </body>
  12. </html>

2.4html/css/javascript注释

HTML的注释:

<!--HTML的注释-->

css的注释:

/*css注释*/

JS注释:多行注释、单行注释

单行注释:注释作用范围只有一行,如果换行了那么不能注释。

//这是单行注释

多行注释:

  1. /*
  2. 这是js的块级注释
  3. 可以注释多行
  4. 这些注释不会进行加载
  5. */

注释快捷键:

Ctrl+/ 单行注释

Ctrl+Shift+/ 多行注释


2.3 console控制台

控制台是浏览器“检查”里面的功能,快捷键是F12,英文叫做“console”。JS程序员常用的调试程序错误的面板。程序的所有错误,都会在控制台中输出(显示),控制台是调试代码的一个利器。

  • 作用1:可以显示错误个数,错误类型,错误的代码位置。

  • 作用2:可以在控制台进行代码编辑,直接在控制台执行,也可以在控制台输出内容。

通过一条console.log()方法,可以在控制台输出自定义的内容。

console本身是js内置对象,内部有大量的方法和属性,其中有一个log()方法(函数),可以帮我们在控制台输出一些对象,并且console.log()方法参数可以有多个。

  1. console.log("这里的内容是打印在控制台的!");
  2. console.log(100-50);
  3. console.log(100*50);
  4. console.log("%c 大家好:2602138376@qq.com","color:red;font-size:30px;");

console的类型:

  1. console.log() 用于在console窗口输出信息

  2. console.dir() 可以显示一个对象的所有属性和方法。

  3. console.table() 会以表格的形式呈现打印的内容

  4. console.warn() 在控制台输出一条警告信息

  5. console.error() 在控制台输出一条错误消息

  6. console.info() 在控制台输出一条通知信息

  7. console.assert() 可用作于判断表达式正确

console.log的占位符:

  1. %s 格式化字符串

  2. %d 格式化整数

  3. %i 格式化整数

  4. %f 格式化浮点数

  5. %o 可扩展的DOM节点格式化

  6. %O 可扩展的JavaScript对象格式化

  7. %c CSS格式字符串

console.log(‘%s + %s’, 1, 1, ‘= 2’);

console.log(“%d年%d月%d日”,2021,03,31);


2.4 document对象

document.write() 方法,用来向网页文档中(body)输出内容

alert()语句

实际上这条语句,在运行一个内置函数,运行函数就要加圆括号,不要纠结这个对象,学所有语言,都是从模仿开始,前期,不要纠结语法的机理是什么,只要模仿,做就行,你模仿了,就能实现效果,随着课程的深入,你将知道每一条语句的机理是什么。

alert("内容");

window.alert("hello world!");

alert()其实是window对象的一个方法,只不过window对象可以不写而已。

程序从上到下执行,从左到右顺序执行,任何程序都是这样的。

语句要遵循语法。

alert()作为一个函数,自定义的内容加引号,单双引号都可以,所有符号都必须是英文的(JS建议用单引号,HTML用双引号,这是不成文的规定)。

注意事项:分号不写就报错。

alert(“从前有坐上”)alert(“山上有座庙”)

如果正确换行不会报错。

alert(“从前有坐上”)

alert(“山上有座庙”)

alert(“庙里有个老和尚”)

原因:JS解析器在解读代码时,会去根据语境的结尾划分语句,如果有分号自动默认是语句的结束,会将后面的语句作为一条新语句解读。如果没有分号,解析器自由的解读代码结尾,默认为换行是一条语句的结尾,没有换行也没有分号导致报错。

在后期上传代码前需要压缩代码,压缩后会将所有代码的换行、空格都删除,此时JS代码变成一行,所以会报错。


prompt()对话框

prompt:提示的意思。

prompt语句也是一个JS内置的功能,可以传递两个参数,自定义参数内容。一般参数都加引号,两个参数之间用逗号隔开。

prompt("请输入年龄:","18");

以上两个参数不是必须,可以省略参数不写。

重点:带圆括号的都叫“函数”或“方法”,而且括号内肯定可以填写参数,至于有多少个参数(每个方法规定不一样)。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议