JavaScript的基础语法

news2024/12/24 3:11:55

目录

一、初识JavaScript(简称JS)

1.JavaScript 运行过程

2.JavaScript 的组成

二、JavaScript的规范与调试

1.JavaScript 的书写形式

1.1 行内式

1.2  内嵌式(建议写在之前)

1.3 外部式(建议写在之前)

1.4 总结 

2.调试过程(建议使用edge、google浏览器)

3.注释

4.输入输出

4.1 输入 prompt —— 弹出提示框

4.2 输出 alert —— 警示对话框, 输出结果

4.3 输出 console.log

三、JavaScript 的语法

1.变量的声明

1.1 语法规则

1.2根据类型的推断运行

四、JavaScript 的数据类型

1.number 数字类型

2.string 字符串类型

2.1 转义字符

2.2 求长度

2.3 字符串拼接(+)

2.4 boolean 布尔类型(表示 "真" 和 "假" )

2.5 undefined 未定义数据类型

2.6 null 空值类型

五、运算符

六、条件语句

七、总结(web开发指南)


一、初识JavaScript(简称JS)

对于 JavaScript 认知:

1️⃣是世界上最流行的编程语言之一

2️⃣是一个脚本,通过解释器运行

3️⃣主要在客户端(浏览器)上运行,现在也可以基于 node.js 在服务器端运行

那么 JavaScript 能做哪些事情呢?

网页开发 ( 更复杂的特效和用户交互 )
网页游戏开发
服务器开发 (node.js)
桌面程序开发 (Electron, VSCode 就是这么来的 )
手机 app 开发

1.JavaScript 运行过程

1️⃣编写的代码是保存在文件中, 也就是存储在硬盘(外存上)

2️⃣双击 .html 文件浏览器(应用程序)就会读取文件, 把文件内容加载到内存中(数据流向: 硬盘 => 内存)

3️⃣浏览器会解析用户编写的代码, 把代码翻译成二进制的, 能让计算机识别的指令(解释器的工作)

4️⃣得到的二进制指令会 CPU 加载并执行(数据流向: 内存 => CPU)

2.JavaScript 的组成

1️⃣ECMAScript(简称 ES): JavaScript 语法

在网络上搜索资料的时候,经常会看到ES5、ES6之类的版本,这就是JavaScript 语法的语法;在进行浏览器的使用,会自动更新到最新的版本

2️⃣DOM: 页面文档对象模型, 对页面中的元素进行操作

3️⃣BOM: 浏览器对象模型, 对浏览器窗口进行操作

例如在我们进行注册的过程中,有的界面就不会跳转到新的窗口,而是会有一个小窗口来让你填写信息,这就是 BOM 窗口

二、JavaScript的规范与调试

1.JavaScript 的书写形式

1.1 行内式

直接嵌入到 html 元素内部

<input type="button" value=" 点我一下 " onclick="alert('张三');" >

注意, JS 中字符串常量可以使用单引号表示, 也可以 使用双引号表示,推荐使用单引号

如果是双引号会出现什么问题呢❓❓❓

 ❗❗❗注意看双引号的选择:alert之前也有一个双引号,这个时候张三的双引号和alert之前的双引号会形成截断,以至于识别不了张三的双引号的,这个时候就需要转义字符来获取张三的双引号;但是存在一个问题就是转义字符不好加,这个时候使用单引号会比较简单

使用单双引号最好的选择就是:单引号嵌套双引号;双引号嵌套单引号,尽量不要重复

那么不适用引号,又会出现什么问题呢❓❓❓

 在这里我想说的是:如果出现问题一定要自己先检查,要会检查,不要一遇到了问题就去问其他人;自己解决问题的过程,会让你的能力更进一步

1.2  内嵌式(建议写在</body>之前)

内嵌式写在 script 标签中

<script>
    alert("初始化执行")
</script>

在 html 中,要写在 body 结束之前,不要放在 head 结束之前 

例如,我写一个代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js-demo</title>
    <script>
        alert(document.getElementById("btnl").value);
    </script>
</head>
<body>
    <input id="btnl" type="button" value=" 点我一下 " onclick="console.log('hello,javascript');" >
    <p></p>
    <button></button>
</body>
</html>

这个代码是从上往下执行的,在 head 获取 btnl,但是这个btnl还未初始化,所以就拿不到这个值,因此在我们刷新页面的时候没有任何变化

 因此写 script 标签的时候,建议放在body结束之前  

1.3 外部式(建议写在</head>之前)

外部式要写在单独的 .js 文件中

alert("hello tools");

如果使用这个alter,使用 script 引入:在 .html 文件中并且在 head 结束之前引入

script src="tools.js"></script>

这个时候小伙伴就有疑问了,刚刚不是说不能放在 head 中,要放在 body中,这个时候为啥就要放在 head 中❓❓❓

❗❗引入的 .js 通常是工具js,或者式通常写在页面里边的;这个工具js是没有操作当前页面的信息,放在head和body之前是没有区别的

当我们去写 javascript 代码的时候在 head 中可能会用到工具js,所以如果放在body之前可能会导致获取不到,所以建议写在 head 里边

1.4 总结 

行内式:通常用来写简单代码(用的很少),通常调用一个javascript方法

内嵌式:只针对当前页面操作,使用内嵌式写法

外部式:如果需要使用一个工具,就用外部写法

2.调试过程(建议使用edge、google浏览器)

1️⃣在出现问题的页面点击F12,或者进入浏览器设置点击更多工具,点击开发者工具就出现调试界面

 2️⃣元素:用来查看 html 代码

 3️⃣控制台:显示JS的报错信息,调试代码,通过报错信息就会跳转到出错的代码

 

 也会显示 JS 的信息(不只是报错信息):

input type="button" value=" 点我一下 " onclick="console.log('hello,javascript');" >

并且我可以在这个控制台中写代码:

 3️⃣源代码:调试JS代码(程序员必须学会的操作)

我们回顾内嵌式中的例子:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js-demo</title>
    <script>
        alert(document.getElementById("btnl").value);
    </script>
</head>
<body>
    <input id="btnl" type="button" value=" 点我一下 " onclick="console.log('hello,javascript');" >
    <p></p>
    <button></button>
</body>
</html>

这个代码会出现问题,那么如何调的呢❓❓❓首先如果这个文件为空,不要紧张,是因为当打开控制台在后,刷新页面在前;这个时候再刷新一下页面即可

4️⃣网络(很重要):抓包,查看所有网络请求

如果进行前后端互通的时候,前端给后端发送一个请求,如果此时出现问题,此时需要排查是前端的问题还是后端的问题,这个时候就需要通过网络找到接口位置查看信息 (例如发送了什么请求,接收了什么请求),因此这个网络非常重要

5️⃣性能:通过录制进行性能分析

6️⃣内存:拿到当前运行程序在内存中的存储信息

7️⃣应用程序:存放和当前相关的存储信息(具体后边会讲解)

3.注释

单行注释://

多行注释:/*    */

这里注释和 idea 注释基本相同4.

4.输入输出

4.1 输入 prompt —— 弹出提示框

// 弹出一个输入框
prompt("请输入您的姓名:");

4.2 输出 alert —— 警示对话框, 输出结果

// 弹出一个输出框
alert("hello");

4.3 输出 console.log

在控制台打印一个日志(供程序员看)

// 向控制台输出日志
console.log("这是一条日志");

三、JavaScript 的语法

1.变量的声明

主要有两种1️⃣var 2️⃣let

var name = "张三";
alert(name);
let name2 = "李四";
alert(name2);

这两种的区别:

诞生的时间不同——var 诞生的更早,而 let 诞生的比较晚

作用域不同的行为表现上不同——var 更适合全局变量定义,而 let 更适合局部变量的定义

在这里建议使用var

1.1 语法规则

var 变量名 = 值

var name = 'zhangsan';
var age = 20;

代码演示:

var name = prompt("请输入姓名:");
var age = prompt("请输入年龄:");
var sex = prompt("请输入性别");
alert("姓名:" + name + "\n年龄:" + age + "\n性别:" + sex);

1.2根据类型的推断运行

底层本身有类型的说法的:

var num1 = "5";
var num2 = "6";
alert(num1 + num2);
var num1 = 5;
var num2 = 6;
alert(num1 + num2);

第一个代码是字符串;第二个代码是数 

这里我们可以看到不会进行自动类型的转化

四、JavaScript 的数据类型

number : 数字 . 不区分整数和小数 .
boolean : true , false .
string : 字符串类型 .
undefined : 只有唯一的值 undefined. 表示未定义的值 .
null : 只有唯一的值 null. 表示空值 .

1.number 数字类型

在JS中不区分整数和浮点型,统一使用”数字类型“来表示;使用方法和 idea 基本相同。

特殊地:

1️⃣ nfinity: 无穷大 , 大于任何数字 . 表示数字已经超过了 JS 能表示的范围 .
2️⃣ -Infinity : 负无穷大 , 小于任何数字 . 表示数字已经超过了 JS 能表示的范围 .
3️⃣ NaN : 表示当前的结果不是一个数字 .
var num1 = 5;
var num2 = "abc";
alert(num2 - num1);

console.log(isNaN(10));  // false
console.log(isNaN('hehe' - 10));  // true

在这里第一个代码:10不是数字——false;

2.string 字符串类型

在表示字符串的时候:使用单双引号都可以

var a = "haha";
var b = 'hehe';
var c = hehe;    // 运行出错

❓❓如果字符串中本来已经包含引号咋办

var msg = "My name is "zhangsan"";    // 出错
var msg = "My name is \"zhangsan\"";  // 正确, 使用转义字符. \" 来表示字符串内部的引号. 
var msg = "My name is 'zhangsan'";    // 正确, 搭配使用单双引号
var msg = 'My name is "zhangsan"';    // 正确, 搭配使用单双引号

2.1 转义字符

\n            \\            \'            \''            \t

2.2 求长度

使用 String length(取得是字符串的长度

var a = 'hehe';
console.log(a.length);//4
var b = '哈哈';
console.log(b.length);//2

2.3 字符串拼接(+)

var a = "my name is ";
var b = "zhangsan";
console.log(a + b);

拼接的时候不回进行智能转换;字符串 + 数字 = 字符串

console.log(100 + 100);     // 200
console.log('100' + 100);   // 100100

2.4 boolean 布尔类型(表示 "" ""

Boolean 参与运算时当做 1 0 来看待.

2.5 undefined 未定义数据类型

1️⃣如果一个变量没有被初始化, 结果就是 undefined, undefined 类型

var var1;
console.log(var1);

2️⃣undefined 和字符串进行相加, 结果进行字符串拼接

console.log(var1 + " 你好 ");//undefined 你好

3️⃣undefined 和数字进行相加, 结果为 NaN

console.log(var1 + 10);

2.6 null 空值类型

var b = null;
console.log(b + 10);    // 10
console.log(b + "10");  // null10

❗❗注意:

null 和 undefined 都表示取值非法的情况, 但是侧重点不同.
null 表示当前的值为空. (相当于有一个 空的盒子)
undefined 表示当前的变量未定义. (相当于 连盒子都没有 )

五、运算符

在我们 JavaScript 中的运算符与java是类似的,通常都是一些相同的意思;但是在 JavaScript 有几个特殊的运算符,我们来认识一下这几个运算符:

1️⃣=== 比较相等(不会进行隐式类型转化)

2️⃣==  比较相等(会进行隐式类型转化)

var num1 = 10;
var num2 = "10";
console.log("==隐式类型结果:" + (num1 == num2));
console.log("===严格类型转化类型的结果:" + (num1 === num2));

在这个代码中,==就进行了一个隐式转化;===就是一个严格类型转换的结果

六、条件语句

条件语句和java类似,都是一种形式。

❗❗❗需要注意的几点就是:

如果是一个 int 类型的条件,切记不要直接去用,要转化成 int 类型,不然代码处处是惊喜;

例如:仔细看一下代码

var num = prompt("判断奇偶数,请输入:");
if(num % 2 == 0) {
    alert(num + " -> 结果为偶数");
} else {
    alert(num + " -> 结果为奇数");
}

以上代码是正确的输出没问题,接下来看下边的一个代码 

var num = prompt("判断奇偶数,请输入:");
console.log(num + 10);
if(num % 2 == 0) {
    alert(num + " -> 结果为偶数");
} else {
    alert(num + " -> 结果为奇数");
}

通过以上代码,我们就知道在进行操作过程中,要进行强制转化

例如:用户输入一个整数, 提示今天是星期

七、总结(web开发指南)

在这里我推荐一个网站,我们如果遇到不知道改怎么使用某些语句,可以参考以下网站来具体查询到底如何使用

网站链接:JavaScript - 学习 Web 开发 | MDN (mozilla.org)

例如:我们所学的for循环,就可以直接查找并且支持在线运行 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/507313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 SpringBoot+Vue 的在线学习平台(附源码)

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括学习平台的网络应用&#xff0c;在外国学习平台已经是很普遍的方式&#xff0c;不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学习平台…

【Java|golang】2437. 有效时间的数目

给你一个长度为 5 的字符串 time &#xff0c;表示一个电子时钟当前的时间&#xff0c;格式为 “hh:mm” 。最早 可能的时间是 “00:00” &#xff0c;最晚 可能的时间是 “23:59” 。 在字符串 time 中&#xff0c;被字符 ? 替换掉的数位是 未知的 &#xff0c;被替换的数字…

大型数据库期末总复习【SQL server 2008 基础教程】

一、概述 1.Microsoft SQL Server系统的体系结构 Microsoft SQL Server 2008系统由4个主要部分组成。这4个部分被称为4个服务&#xff0c;这些服务分别是数据库引擎、分析服务、报表服务和集成服务。这些服务之间相互存在和相互应用&#xff0c;它们的关系示意图如图所示&…

Web安全:AppScan 安装和使用.(渗透常用工具)

Web安全&#xff1a;AppScan 安装和使用. AppScan是一款web安全扫描工具&#xff0c;可以利用爬虫技术进行网站安全渗透测试&#xff0c;根据网站入口自动对网页链接进行安全扫描&#xff0c;扫描之后会提供扫描报告和修复建议等. 目录&#xff1a; Web安全&#xff1a;AppSc…

【CSS系列】第四章 · CSS字体属性

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

51单片机(八)串口通信

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

网易云音乐开发--video模块开发

video页面头部搭建 首先头部的结构是这样的 这里采用的是淘宝双飞翼布局。俩端固定&#xff0c;中间自适应。 这里说一下这个flex:1 flex-grow:可拉伸 flex-shrink:可压缩 flex-basis:当前元素的宽度 flex默认值:flex-grow:0,flex-shrink:1,flex-basis:auto flex:1 flex-gr…

Linux一学就会——系统文件I/O

Linux一学就会——系统文件I/O 有几种输出信息到显示器的方式 #include <stdio.h> #include <string.h> int main() {const char *msg "hello fwrite\n";fwrite(msg, strlen(msg), 1, stdout);printf("hello printf\n");fprintf(stdout, &q…

DEJA_VU3D - Cesium功能集 之 106-鹰眼地图

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…

如何使用 YOLOv8 神经网络检测图像中的物体

对象检测是一项计算机视觉任务,涉及识别和定位图像或视频中的对象。它是许多应用的重要组成部分,例如自动驾驶汽车、机器人和视频监控。 多年来,已经开发了许多方法和算法来查找图像中的对象及其位置。执行这些任务的最佳质量来自使用卷积神经网络。 YOLO 是这项任务最流行的…

计算机网络——快速了解传输层协议

文章目录 一、TCP和UDP的区别二、TCP1.TCP报文段2.建立连接&#xff08;三次握手&#xff09;3.断开连接&#xff08;四次挥手&#xff09;4.TCP提供的支持 三、UDP参考 一、TCP和UDP的区别 传输层协议有两个——TCP和UDP&#xff0c;二者区别如下&#xff1a; 二、TCP 1.TCP…

MySQL集群

目录 主从复制 主从复制流程&#xff1a; 为什么要有relay log中继日志&#xff1f; 为什么要有主从复制&#xff0c;好处&#xff1f; 实际生产环境中。如果对MySQL数据库的读写都在一台数据库服务器中操作&#xff0c;无论是再安全性、高可用性&#xff0c;还是高并发性等…

MapReduce之WordCount本地测试

1&#xff09;需求 在给定的文本文件中统计输出每一个单词出现的总次数。 &#xff08;1&#xff09;输入数据 2&#xff09;期望输出数据 banzhang 1 cls 2 hadoop 1 jiao 1 ss 2 xue 1 2&#xff09;需求分析 按照MapReduce编程规范&#xff0c;分别编写Mapper&#x…

跨境电商支付平台-PingPong Pay(实现收银台模式沙箱支付)

介绍 PingPongCheckout 跨境支付的 API 接口文档,商户服务器和 PingPongCheckout 服务器进行交互。 供商户/平台服务方的技术开发及测试相关人员使用。 本文档分别从交互流程、通讯方式、签名方 案、交易接口、注意事项等⻆度详细介绍了 PingPongCheckout 跨境支付 API 接口的…

【C++】类和对象(中篇)

几个成员函数 类的6个默认成员函数构造函数引例特点 析构函数概念特点 拷贝构造函数概念特征 赋值运算符重载赋值运算符重载赋值运算符只能重载成类的成员函数不能重载成全局函数前置和后置重载 日期类的实现const成员函数取地址及const取地址操作符重载 类的6个默认成员函数 …

Web缓存利用分析(二)

导语&#xff1a;在上一篇文章中&#xff0c;大致介绍了一些关于Web Cache的攻击方式及CTF中的一些出现。而本篇文章则会聚焦于Web Cache在学术前沿的一些攻击利用方式的探究。 前言 在上一篇文章中&#xff0c;大致介绍了一些关于Web Cache的攻击方式及CTF中的一些出现。而本…

Web缓存利用分析(一)

导语&#xff1a;最近看到一些Web Cache方面的攻击&#xff0c;于是总结了一下&#xff0c;内容如下。 前言 最近看到一些Web Cache方面的攻击&#xff0c;于是总结了一下&#xff0c;内容如下。 背景知识 Cache是一种经典的用空间换时间的做法&#xff0c;其应用场景非常广…

Htop使用说明

目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况&#xff0c;htop就是一种互动式的进程查查看器&#xff0c;整齐用下来感觉比top的逼格高&#xff0c;造作可视化都更方便些&#xff0c;我觉得还…

《Vue.js 设计与实现》—— 02 框架设计核心要素

框架设计并非仅仅实现功能那么简单&#xff0c;里面有很多学问。例如&#xff1a; 框架应该给用户提供哪些构建产物&#xff1f;产物的模块格式如何&#xff1f; 当用户没有以预期的方式使用框架时&#xff0c;是否应该打印合适的警告信息从而提供更好的开发体验&#xff0c;让…

优化性能测试分析:如何科学利用CPU异常曲线

性能测试为保证软件质量起到重要作用&#xff0c;对于交易量较大的应用系统&#xff0c;性能测试更是一个必不可少的环节。 测试人员通常通过监测响应时间、吞吐量、应用服务器和数据库服务器的CPU及内存来衡量系统的性能是否达标&#xff0c;那么&#xff0c;在性能测试过程中…