【JavaScript】JavaScript基础篇

article/2025/11/9 2:43:56

目录

🍊一. 初识JavaScript

🍈二. JavaScript的书写格式

🥭三. JavaScript的基础语法 

🌴1. 变量的用法

🌾2. 基本数据类型

🌵3. 运算符 

🌴4. 条件语句

🌾5. 循环语句

🌵6. 数组 

🌴7. 函数

🌵8. 对象


🍊一. 初识JavaScript

JavaScript简称JS,是一个脚本语言,通过解释器运行,主要在客户端(浏览器)运行,现在也可以基于node.js在服务端运行

🍀JavaScript能做的事情:

  • 网页开发(复杂的特效和用户交互)
  • 网页游戏开发
  • 服务器开发(基于node.js)
  • 桌面程序开发(如VSCode)
  • 手机app开发 

🍁JavaScript与HTML和CSS之间的联系:

HTML:网页的结构(骨架)
CSS:网页的样式(皮)
JavaScript:网页的功能(魂)

🍃JavaScript的组成:

  • ECMAScript:JavaScript语法
  • DOM:页面文档对象模型,对页面的元素进行操作
  • BOM:浏览器对象模型,对浏览器窗口进行操作

🍈二. JavaScript的书写格式

  • 行内式:直接嵌入到html元素内部 
<input type="button" value="按钮" onclick="alert('你好呀')">
  • 内嵌式:写到script标签中
<script>alert("哈哈");
</script>

🧂注意:script标签可以写在body标签中,也可以写在body标签外

  • 外部式:写到单独的.js文件中
<script src="hello.js"></script>
alert("hello word!");

  • 注释:

🥕单行注释://
🥕多行注释:/* */

//注释
/* 注释1注释2
*/

🧂注意:多行注释/**/不能嵌套 

  • 输入prompt:弹出一个输入框
    <script>prompt("请输入姓名:");prompt("请输入年龄:");</script>

  • 输出alert:弹出一个警示对话框,输出结果 
    <script>alert("姓名年龄输入完毕!");</script>

  • 输出console.log:在控制台打印一个日志
    <script>console.log("这是一条日志");</script>

重要概念:

🥕console是一个js中的对象
🥕.表示对象中某个属性或者方法,可以理解成“的”
🥕console.log就可以理解成:使用“控制台”对象“的”log方法 

🥭三. JavaScript的基础语法 

🌴1. 变量的用法

🥕创建变量: 

    <script>var a = 10;var name = "张三";let flag = true;</script>

var与let都可以创建变量,他俩只表示这是一个变量,而不指定具体的类型,具体类型由后面具体的赋值确定 

var与let的区别是作用域不同,后面会介绍

🥕使用变量:

    <script>var a = 10;var name = "张三";let flag = true;a = 20; //修改变量的值console.log(name); //控制台打印变量</script>

👁️‍🗨️代码示例:创建变量接收输入,然后再输出

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

+ 表示字符串的拼接
\n 表示换行 

🥕理解动态类型

JS的变量类型程序运行过程中才确定的,随着程序的运行,变量的类型可能会发生改变

var a = 10;
var name = "小花";
a = "张三";
name = 10;

🌾2. 基本数据类型

🥕Number数字类型

JS不区分整数和浮点数,统一用数字类型来表示

可以用不同的进制表示:

var a = 10;  //十进制
var b = 07;  //八进制,以0开头
var c = 0xa; //十六进制,以0x开头
var d = 0b10;//二进制,以0b开头

特殊的数字值:

  • Infinity:无穷大,大于任何数字,表示数字已经超过了JS能表示的范围
  • -Infinity:负无穷大,小于任何数字。表示数字已经低于了JS能表示的范围
  • NaN:表示当前的结果不是一个数字 
var max = Number.MAX_VALUE;
console.log(max*2); //得到Infinity
console.log(-max*2);//得到-Infinity
console.log("haha"-10);//得到NaN

注意:

  • 负无穷大和无穷小不是一回事,无穷小是无限趋近0,值为1/Infinity
  • “haha”-10得到NaN,但是“haha”+10不是NaN,而是进行字符串拼接得到“haha10”
  • 可以使用isNaN判断是不是一个数字:
console.log(isNaN(10)); //true
console.log(isNaN("haha"-10));  //false

🥕String字符串类型

字符串字面量需要用单引号或者双引号引起来

var a = "aaa";
var b = 'bbb';
var c = ccc;  //运行出错

如果字符串中已经包含了引号咋办?

var msg = "my name is 'zhangsan'"; //正确,双引号包裹单引号
var msg = 'my name is "zhangsan"'; //正确,单引号包裹双引号
var msg = "my name is \"zhangsan\""; //正确,使用转义字符,\"表示内部的引号
var msg = "my name is "zhangsan""; //出错

转义字符:

  • \n,表示换行
  • \\,表示\
  • \',表示'
  • \",表示"
  • \t ,表示制表符

求字符串的长度:使用String的length属性即可

var s = "haha";
console.log(s.length); //4
var c = "hello";
console.log(c.length); //5

字符串拼接:使用+进行拼接

var a = "hello";
var b = "word";
console.log(a+b);//helloword

数字和字符串也可以拼接

var a = "my age is ";
var b = 16;
console.log(a+b); //my age is 16

  

🥕Boolean布尔类型

表示真true或假false,参与运算时当作1和0

var a = true;
var b = false;
console.log(2+a+b);//3

注意:实际开发不这么用 

🥕undefined未定义的数据类型

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

var a;
console.log(a);//undefined

undefined和字符串相加,结果为字符串拼接的结果

var a;
console.log(a+"haha"); //undefinedhaha

  

undefined和数字相加,结果为NaN,表示不是一个数字类型 

var a;
console.log(a+10);//NaN

🥕null空值类型

null表示当前变量为一个“空值”

var a = null;
console.log(a+10); //10
console.log(a+"haha"); //nullhaha

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

🌵3. 运算符 

JavaScript中的运算符和Java中的运算符基本相同,此处不详细介绍,可以参考:初学Java------Java的基本程序设计结构_XH学Java的博客-CSDN博客 

🥕算数运算符:

  • +
  • -
  • *
  • /
  • %

🥕赋值运算符和复合赋值运算符:

  • =
  • +=
  • -=
  • *=
  • /=
  • %=

🥕自增自减运算符:

  • ++
  • --

🥕比较运算符:

  • <
  • >
  • <=
  • >=
  • ==(会进行隐式类型转换)
  • !=
  • ===(不会进行隐式类型转换)
  • !== 

🥕逻辑运算符:用于计算多个boolean表达式的值,此处与Java中略有不同

  • &&
  • ||
  • !

不同:Java中严格要求表达式两边为boolean类型,但是JavaScript中可以为数值类型 

对于数值型,哪个数值能确定最终表达式的值,结果就为哪个值 

👁️‍🗨️比如:

2&&3,3才确定了最终为true,结果就为3
3&&0,0确定了最终为false,结果为0
2||3,2就可以确定最终为true,结果为2
0||3,3确定了最终结果为true,结果为3 

console.log(2&&3); //3
console.log(3&&0); //0
console.log(2||3); //2
console.log(0||3); //3

🥕位运算符:

  • &
  • |
  • ~

🥕移位运算符:

  • <<
  • >>
  • >>>

🌴4. 条件语句

🥕if语句

与Java中用法相同

👁️‍🗨️示例:判断一个数是奇数还是偶数 

var num = 10;
if(num == 1){console.log(num+"既不是偶数也不是奇数");
}else if(num % 2 == 0){console.log(num+"是偶数");
}else {console.log(num+"是奇数");
}

🥕三元表达式 

与Java用法相同

👁️‍🗨️示例:将一个boolean表达式的值取反

var a = true;
a = a?false:true;
console.log(a);

🥕switch分支 

与Java用法相同

👁️‍🗨️示例:用户输入一个数,判断是星期几

var day = prompt("请输入一个数字:");
switch(parseInt(day)){ //day为一个字符串,必须转为数字case 1:alert("星期一");break;case 2:alert("星期二");break;case 3:alert("星期三");break;case 4:alert("星期四");break;case 5:alert("星期五");break;case 6:alert("星期六");break;case 7:alert("星期天");break;default:alert("输入有误");   
}

🌾5. 循环语句

🥕while循环

与Java用法相同

👁️‍🗨️示例:打印1到10

var num = 1;
while(num <= 10){console.log(num);num++;
}

🥕for循环

与Java用法相同

👁️‍🗨️示例:计算5的阶乘

var result = 1;
for(var i = 1;i <= 5;i++){result *= i;
}
console.log(result);

🥕continue与break

与Java的用法相同,continue跳出本趟循环,继续执行下一次循环break结束整个循环

🌵6. 数组 

🥕数组的创建

  • 使用new关键字创建
var arr = new Array();
  • 使用字面量方式创建
var arr = [1,2,3,"hehe",5,true];

👁️‍🗨️注意:

JavaScript使用[]包裹数组元素,而不是{}
JavaScript不要求数组中是同一类型元素

🥕获取数组元素

使用下标方式获取数组元素,从0开始

var arr = [1,2,3,"hehe",5,true];
console.log(arr[0]);
console.log(arr[3]);
console.log(arr[5]);

👁️‍🗨️注意:如果下标超过数组读取范围,则结果为undefined

console.log(arr[100]);

🥕新增数组元素

  • 通过修改length新增
var arr = [1,2,3,4];
arr.length = 6;
console.log(arr[5]); //新增元素默认值为undefined
console.log(arr);

  • 通过下标新增

如果下标超过范围赋值元素,则会给指定位置插入新元素

var arr = [];
arr[2] = 3;
console.log(arr);
console.log(arr[0]); //[0]和[1]都是undefined

  • 使用push进行元素追加

👁️‍🗨️示例:将一组数的奇数放到一个新数组中

var arr = [1,2,3,4,5,6,7,8,9];
var newArr = [];
for(var i = 0;i < arr.length;i++){if(arr[i] == 1){continue;}if(arr[i] % 2 != 0){newArr.push(arr[i]);}
}
console.log(newArr);

🥕删除数组中的元素

使用splice方法删除数组中的元素,第一个参数表示从下标为几开始删除,第二个参数表示要删几个

var arr = [1,2,3,4,5];
arr.splice(2,2);//删除3,4
console.log(arr);//打印1,2,5

🌴7. 函数

🥕函数的创建格式:

function 函数名 (参数列表) {函数体;return 返回值;
}

👁️‍🗨️示例:创建一个可以实现两数和的函数

function add1(a,b){ //带有返回值的函数return a+b;
}
function add2(a,b){ //没有返回值的函数console.log(a+b);
}
console.log(add1(1,2));
add2(3,4);

👁️‍🗨️注意:

  • 实参和参数1的个数可以不匹配
  • 实参个数比形参个数多,多出的不参与运算
  • 实参个数比形参个数少,多出的形参值为undefined
function sum(a,b,c){console.log(a+b);
}
sum(10,20,30); //10+20 = 30
sum(10); //10+undefined = NaN

另一种函数创建的格式:

var add = function(){var sum = 0;for(var i = 0;i < arguments.length;i++){sum += arguments[i];}return sum;
}
console.log(add(10,20,30));//60
console.log(add(1,2,3));//6
console.log(typeof add);//function

说明:

  • function(){}定义了一个匿名函数,用变量来表示,后面就可以用这个变量来调用函数了
  • arguments为传入的参数,将参数作为一个数组
  • typeof表示类型 

🥕作用域

  • 全局作用域:在整个script标签,或者单独的js文件中生效 
  • 局部作用域/函数作用域:在函数内部生效
var a = 10;//全局变量
function test (){var a = 20;//局部变量console.log(a);//优先找自己的局部变量,若没有则找全局变量
}
test();

创建变量如果不写var或者let,得到的是一个全局变量

function test(){a = 10;b = 20;
}
test();
console.log(a);
console.log(b);

🥕var与let的区别

作用域不同

function test(){var a = 10;let b = 20;
}
console.log(b); //报错
console.log(a); //报错

👁️‍🗨️说明:在函数中var与let定义的变量,在函数外边都不能使用 

while(1 > 0){var a = 10;let b = 20;break;
}
console.log(a);
console.log(b);

👁️‍🗨️说明:在条件/循环中var定义的变量外边还能用,let定义的变量外边用不了 

🌵8. 对象

JavaScript与Java中的对象概念差不多,只是具体使用语法差别较大

🥕对象的创建

  • 使用{}创建对象:
var student = {name: "张三",age: 23,sex: "男",play: function(){console.log("正在玩耍");}
};

👁️‍🗨️注意:也可以使用student.name = "xxx";这样的方式来增加属性

student.height = 230; //新增了height属性

🧂属性和对应的值用键值对的形式来组织
🧂键值对之间用“,”分割,最后一个属性“,”可有可无
🧂键和值用: 分割
🧂方法的值是一个匿名函数

👁️‍🗨️对象属性和方法的使用:

console.log(student.name);
console.log(student.age);
student.play();//调用方法要加()

  • 使用new Object()创建对象:
var student = new Object();
student.name = "牛魔王";
student.age = 500;
student.play = function(){console.log("正在吃唐僧肉");
}
console.log(student.name);
console.log(student.age);
student.play();

  • 使用构造函数创建对象:
function 构造函数名(参数列表){this.属性 = 值;this.方法 = function...
}
var obj = new 构造函数名(实参);

👁️‍🗨️示例:创建几个猫咪对象

function Cat(name,color,type,sound){this.name = name;this.color = color;this.type = type;this.miao = function(){console.log(sound);}
}
var nuomi = new Cat("糯米","白色","波斯猫","喵喵~");
var wanzi = new Cat("丸子","灰色","中华田园猫","咪咪");
var tuanzi = new Cat("团子","黑色","狸猫","喵呜");
console.log(wanzi);
nuomi.miao();

👁️‍🗨️注意:

🧂在构造方法中使用this关键字表示当前正在构建的对象
🧂构造函数的名字一般是大写的
🧂构造函数不需要return
🧂创建对象的时候要使用new关键字


http://chatgpt.dhexx.cn/article/IqMpybnS.shtml

相关文章

前端基础语言HTML、CSS 和 JavaScript 学习指南

对于任何有兴趣学习前端 Web 开发的人来说&#xff0c;了解 HTML、CSS 和JavaScript 之间的区别至关重要。这三种前端语言都是您访问过的每个网站的用户界面构建块。而且&#xff0c;虽然每种语言都有不同的功能重点&#xff0c;但它们都可以共同创建令人兴奋的交互式网站&…

JavaScript基础入门

一&#xff0c;什么是JavaScript 1&#xff0c;与Java无关&#xff01;与Java无关&#xff01;与Java无关&#xff01; JavaScript是一种为网站添加互动以及自定义行为的客户端脚本语言&#xff0c; 通常只能通过Web浏览器去完成操作&#xff0c; 而无法像普通意义上的程序那样…

javascript小白学习指南2

好啦 好啦 &#xff0c;美女看够了&#xff0c;我们开始继续上一次讲的内容把&#xff08;上一节的内容&#xff09; 控制语句&#xff1a; 首先我先给大家总结一下在javascript中一共有 9 种控制语句它们分别是 if 语句do-while 语句while 语句for 语句for-in 语句label 语句b…

JavaScript学习手册(10)

流程控制语句 条件判断语句&#xff08;if语句&#xff09; 在执行某个语句之前进行判断&#xff0c;条件成立才会执行语句&#xff0c;条件不成立则语句不成立 ​ 语法一&#xff1a;if&#xff08;条件表达式&#xff09; ​ 语句 ​ **语法二&#xff1a;**if&#xff08;条…

十本经典JavaScript书籍

十本经典JavaScript书籍 同步滚动&#xff1a; 一&#xff1a;《JavaScript权威指南&#xff08;第六版&#xff09;》 这本书是程序员学习核心JavaScript语言和由Web浏览器定义的JavaScript API的指南和综合参考手册。第6版涵盖HTML 5和ECMAScript 5。很多章节完全重写&…

JavaScript学习笔记

JavaScript学习笔记 1.JavaScript的输入输出 输出 js自上往下执行 <!-- js代码需要编写到script标签中 --><script>// 控制浏览器弹出一个警告框alert("hello world");// 让计算机在页面中输出一个内容//可以在body中写入一个内容document.write(…

JavaScript 的学习

文章目录 一、简介总结 一、简介 JavaScript 是互联网上最流行的脚本语言&#xff0c;这门语言可用于 HTML 和 web&#xff0c;更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。 JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 JavaScript 是可插…

javascript小白学习指南1

引言&#xff1a; 做为一名程序员&#xff0c;都是真心的想把自己的东西分享出来&#xff0c;供大家一起学习探讨&#xff0c;一起提高技能&#xff0c;一起涨工资&#xff0c;呵 这一系列的文章都是关于Javascript 基础的 当然文章当中穿插了些我自己的理解&#xff0c;希望可…

javascript学习指南,javascript自学要多久

javascript是干什么的 JavaScript&#xff08;简称“JS”&#xff09; 是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名&#xff0c;但是它也被用到了很多非浏览器环境中&#xff0c;JavaScript 基于原型编程、…

学习JavaScript这一篇就够了

目录 第一章 JavaScript简介1.1、JavaScript的起源1.2、JavaScript的组成1.3、JavaScript的特点1.4、JavaScript的使用1.4.1、标签引用1.4.2、文件引用 1.5、JavaScript的输出1.5.1、页面输出1.5.2、控制台输出1.5.3、弹出窗口输出 1.6、JavaScript的注释1.6.1、单行注释1.6.2、…

JavaScript 教程 (详细 全面)

文章目录 JavaScript 是什么&#xff1f;JavaScript 简介1. JavaScript 的历史2. JavaScript 与 ECMAScript 的关系3. 如何运行 JavaScript4. JavaScript 具有以下特点 Node.js 是什么&#xff1f;Node.js 简介1. 运行时是什么&#xff1f;2. Node.js 的诞生3. Node.js 的组成4…

JavaScript学习指南

1.1 JavaScript基础概念&#xff1a; JavaScript (ECMAScript) &#xff1a;JavaScript 是脚本语言。JavaScript和ECMAScript通常被人用来表达相同的含义&#xff0c;但是JavaScript并不是这么一点含义&#xff0c;它是由ECMAScript 核心. DOM 文档对象模型. BOM 浏览器对象模型…

JavaScript入门学习指南

一、初始JavaScript JavaScript运行在客户端脚本语言&#xff1a;不需要编译逐行进行解释学习作用: 表单验证网页特效服务端开发桌面程序APP物联网-控制硬件游戏开发 浏览器执行JS&#xff1a; 浏览器分成两个部分&#xff0c;渲染引擎和JS引擎 渲染引擎&#xff1a;用于解…

Caption Anything

Github&#xff08;已开源&#xff09;: https:// https://github.com/ttengwang/Caption-Anything Hugging Face Demo: https://huggingface.co/spaces/TencentARC/Caption-Anything &#xff0c;时长00:13 清明上河图demo 近日南方科技大学和腾讯ARC Lab开源了一款交互…

rethinking the inception architecture for computer vision

Google在GoogleNet中提出了inception概念之后&#xff0c;又提出了inception_2,inception_3&#xff0c;都在这篇论文中谈及。 文章地址为http://arxiv.org/pdf/1512.00567v3.pdf 四个通用的设计原则&#xff08;General Design Principles): 1. Avoid representational bot…

(Inceptionv3)Rethinking the Inception Architecture for Computer Vision

翻译论文汇总&#xff1a;https://github.com/SnailTyan/deep-learning-papers-translation Rethinking the Inception Architecture for Computer Vision 摘要 对许多任务而言&#xff0c;卷积网络是目前最新的计算机视觉解决方案的核心。从2014年开始&#xff0c;深度卷积网…

View Synthesis

一、SynSin: End-to-End Synthesis from a Single Image &#xff08;CVPR2020&#xff09; 该论文给出了一个视角图片生成的方法&#xff0c;其pipeline如下图&#xff1a; 首先将图片输入特征和深度网络得到特征map和深度图&#xff0c;接着通过相机参数变换为带特征的点云&…

Intention Oriented Image Captions with Guiding Objects

Intention Oriented Image Captions with Guiding Objects 原文地址 时间&#xff1a;2019 CVPR Intro image caption的过程缺少可控性&#xff0c;一张图片中可以包括很多个目标&#xff0c;但是一个描述只能包括其中一小部分 尽管我们能找到并分类出所有目标&#xff0c;…

Interact as You Intend: Intention-Driven HOI Detection

IEEE多媒体汇刊Author:Bingjie Xu, Junnan Li, Yongkang Wong摘要 为了与物体交互&#xff0c;人类会根据自己的意图引导注意力和移动身体。具体而言&#xff0c;提出的human intention-driven的HOI检测&#xff08;iHOI&#xff09;框架根据人体关节到物体实例的相关距离进行…

【Inception-v3】《Rethinking the Inception Architecture for Computer Vision》

CVPR-2016 在 CIFAR-10 上的小实验可以参考博客【Keras-Inception v3】CIFAR-10 文章目录 1 Background and Motivation2 Advantages / Contributions3 Innovations4 Method4.1 Factorizing Convolutions with Large Filter Size4.1.1 Factorization into smaller convolutions…