前端秘法基础式终章----欢迎来到JS的世界

简介: 前端秘法基础式终章----欢迎来到JS的世界



一.JavaScript的背景

JavaScript 是一种高级编程语言,通常用于网页开发和网页交互。它可以让网页变得更加动态和交互性强,例如实现动画效果、表单验证、数据交互等。

 

JavaScript 可以直接嵌入到 HTML 页面中,通过浏览器执行,从而实现网页的各种功能。它也可以用于开发桌面应用程序、移动应用程序等。

JavaScript 有以下几个特点:

 

- 解释性语言:JavaScript 代码不需要编译,直接由浏览器解释执行。

- 面向对象:它支持面向对象编程的特性,如类、对象、继承等。

- 事件驱动:通过监听和响应网页上的各种事件(如点击、鼠标移动等)来触发相应的 JavaScript 代码执行。

- 跨平台:由于 JavaScript 主要在浏览器中运行,所以它可以在各种操作系统和设备上运行。

二.JavaScript的书写形式

1.行内式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="button" value="          js         " onclick="alert('welcome to js!')">
</body>
</html>

注意这里onclick中的双引号和单引号可互换,既可以单引号包含双引号,又可以双引号包含单引号,和Python中的单双引号用法相似

2.嵌入式

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Document</title>

</head>

<body>

</body>

<script>alert('welcome ton js!')</script>

</html>

通过script标签引入JS代码

3.外部式

通过JS文件引入

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Document</title>

</head>

<body>

</body>

<script src="JScode/JS01.js"></script>

</html>

需要注意的是css在引入的时候是link标签搭配href属性,而JS在引入的时候则是script标签搭配src属性

三.JS中的变量

1.变量的定义

var a = 0;

let a = 0;

上述两种定义变量的方法都行,其中let是在var的基础上做一些优化和改进

2.JS动态类型变量

与Python一样,JS中的变量属于动态类型变量,它的变量类型可以随着数据类型的改变而改变

2.1强类型和弱类型

强类型是指数据类型的转变需要进行强制转换

弱类型是指数据类型转变不需要强转,JS,Python是常见的弱类型语言

3.JS中的变量类型

需要特别注意的是infinity表示正无穷,nan表示不是数字,undefined表示变量未定义,null表示该变量为空,两者在逻辑判断上是相等的,都为false,不过null是空对象指针,类型为object,undefined是未定义,返回类型为undefined

四.运算符

运算符与C语言大致相同,需要注意的是等号

一个等号表示赋值

两个等号表示比较内容是否相同,不考虑数据类型,也就是1==true是返回true

三个等号考虑数据类型

五.if语句和三元表达式和Switch语句和循环语句

用法与C语言相同

这里讲一下调试技巧

打开网页,进入开发者工具,进入console控制台

按Ctrl+shift+r进入调试模式,按f11逐步进行

六.数组

1.创建获取数组元素

创建数组可以采用字面变量创建:let arr = [1, 2, 3];

也可以new一个数组对象let arr = new Arry();

利用数组下标获取元素即可

2.新增数组元素

修改数组长度

let a = new Array(1, 2, 3);

a.length = 5;

console.log(a);

我们可以看到最后有两个空位,数据类型为undefined

直接通过下标赋值

let a = new Array(1, 2, 3);

a[3] = 5;

console.log(a);

通过push追加

let a = new Array(1, 2, 3);

let newa = new Array();

for(i = 0; i < a.length; i++){

   newa.push(a[i]);

}

console.log(newa);

七.函数

1.函数的声明和调用

function Add(x, y){

   return x + y;

}

let Min = function(x, y){

   return x * y;

}

两种写法都可以,第二种是直接将函数给到一个变量,可以不用书写函数名,通过变量直接调用

2.作用域及作用域链

JS中会出现函数套函数的情况,那么内层函数可以使用外层函数的变量,但外层函数得不到内层函数的变量,因为变量的搜索遵循由内到外

八.对象

其实就类似于C语言中的结构体(但它们也有一些本质的区别,可以抽象的理解)

1.对象的创建

1.1字面变量创建

let people = {

   name:"zhangsan",

   age:16,

   gender:"male"

}

console.log(people);

类似于Python中的字典,通过键值对创建

1.2使用new Object创建

let People = new Object()

People.name = "zhangsan";

People.age = 16;

console.log(People);

1.3构造函数创建对象

function people(name, age, gender){

   this.name = name;

   this.age = age;

   this.gender = gender;

}

let people1 = new people("zhansan", 16, "male");

console.log(people1);

1.4class构造对象

es6中开始支持用class去构建对象,弥补了上述方法无法继承的缺陷

class people{

   constructor(name, age){

       this.name = name;

       this.age = age;

   }

   Say(){

       console.log("hello");

   }

}

let zhangsan = new people("zhangsan", 16);

console.log(zhangsan);

zhangsan.Say();

1.5static修饰

此时不论是属性还是方法都不属于对象,而属于类,在调用的时候要基于类名去调用

class people{

   constructor(name, age){

       this.name = name;

       this.age = age;

   }

   Say(){

       console.log("hello");

   }

   static Say1(){

       console.log("hehe");

   }

}

let zhangsan = new people("zhangsan", 16);

console.log(zhangsan);

zhangsan.Say();

people.Say1();

1.6对象的继承

class people{

   constructor(name, age){

       this.name = name;

       this.age = age;

   }

   Say(){

       console.log("hello");

   }

   static Say1(){

       console.log("hehe");

   }

}

class student extends people{

   constructor(name, age, num){

       super(name, age);

       this.num = num;

   }

}

通过extends指定你所要继承的属性所属的类,通过super指定你要继承的具体属性

相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
38 0
|
12天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
11天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
18 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
16天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
22 1
|
17天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
16 1
|
20天前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
25 1
|
27天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
20 3
|
1月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
138 0
|
1月前
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念
|
1月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题