JavaScript极速入门(1)

初识JavaScript

JavaScript是什么

JavaScript(简称JS),是一个脚本语言,解释型或者即时编译型语言.虽然它是作为开发Web页面的脚本语言而著名,但是也应用到了很多非浏览器的环境中.

看似这门语言叫JavaScript,其实在最初发明之初,这门语言的名字其实是在蹭Java的热度,实际上和Java差别挺大.

JavaScript和HTML和CSS之间的关系

HTML:网页的结构(骨) 

CSS:网页的表现(皮)

JavaScript:网页的行为(灵魂).

JavaScript快速上手

1.在HTML中,运行如下代码:

<!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><script>alert("原神启动!")</script>
</body>
</html>

2.运行浏览器

 

引入方式

JS有三种引入方式,语法如下表所示:

引入方式语法描述示例
行内样式直接嵌入到html内部

<input type="button" value="点我一下"

οnclick="alert('haha')">

内部样式定义<script>标签,写到script标签中

<script>

        alert("星穹铁道启动!");

</script>

外部样式定义<script>标签,通过src属性引入外部js文件<script src="???.js"></script>

3种引入方式对比:

1.内部样式会出现大量代码冗余,不方便后期的维护,所以不常用.

2.行内样式,只适合于简单样式.只针对某个标签生效,缺点是不能使用太复杂的js.

3.外部样式,html和js实现了分离,这也是企业开发种常用的方式

基础语法

JavaScript虽然一些设计理念和Java相去甚远, 但是在基础语法层面还是有一些相似之处的.有了Java的基础很容易理解JavaScript的一些基础语法.

变量

创建变量(变量定义/变量声明/变量初始化),JS有三种方式.

关键字解释示例
var早期JS中声明变量的关键字,作用域在该语句函数范围内var name='zhangsan';
lesES6种新增声明变量的关键字,作用域在该语句所在代码块内les name='zhangsan';
const声明变量的,声明变量后不能修改const name='zhangsan';

注意事项:

1.JavaScript是一门动态弱类型的语言,变量可以存放不同类型的值(动态).比如:

var name='zhangsan';
var count=5;

随着程序的运行,变量的类型可能会发生改变(弱类型).

var a = 10;
a = "hehehe";

Java是静态强类型语言,在变量声明中,需要明确定义变量的类型.如果不强制转换,类型不会发生变化

2.变量命名规则:

a.组成字符可以是任何字母,数字,下划线(_)或美元符号($)

b.数字不能开头

c.建议使用驼峰命名

 3.+表示字符串拼接,也就是将两个字符串首尾相连组成新的字符串.

4.\n表示换行.

数据类型

虽然js是弱数据类型的语言,虽然js中也存在数据类型,js中的数据类型分为:原始类型和引用类型,具体有如下类型:

数据类型描述
numbernumber,不区分小数和整数.
string

字符串类型.

字符串面值需要使用引号引起来,用双引号或者单引号皆可

booleantrue真,false假
undifined表示变量未初始化

使用typeof可以返回数据的类型.

    <script>var a = 10;console.log(typeof a);var b = 'hello';console.log(typeof b);var c = false;console.log(typeof c);var d;console.log(typeof d);var e = null;console.log(typeof e);</script>

运算符

由于JavaScript大部分运算符与Java的运算符相同,因此这里只讲有区别的部分

1. /  :在java中 1 / 2 是0, 而在JavaScript中求出来的结果为0.5.

2.==比较相等(会进行隐式类型转换),比如var a = 10; var b = '10';(a==b)它们比较也会相等.

3.===比较相等(不会进行隐式类型转换), var a = 10; var b = '10';(a===b)它们不会比较相等.

4.!= 和!==规则同2,3.

代码示例:

var age = 20;
var age1 = '20';
var age2 = 20;
console.log(age==age1);//true
console.log(age===age1);//false
console.log(age==age2);true

JavaScript对象

数组

数组定义

创建数组有两种方式

1.使用new关键字进行创建.

//Array 的 A要大写
var arr = new Array();

2.使用字面变量方式创建(常用):

var arr = [];
arr = [1, 2.0, 'haha', false];//数组中的内容称为元素

注意:JS数组中的元素可以是不同类型.

数组操作

1.读:使用下标的方式访问数组元素(下标从0开始)

2.增:通过下标新增,或者使用push来新增元素.

3.改:通过下标修改.

4.删:通过splice来删除数组元素

    <script>var arr = [1, 2, 'haha', false];//读取数组console.log(arr[0]);//1//添加数组元素arr[4] = "add";console.log(arr[4]);//addconsole.log(arr.length);//5, 获取数组的长度//修改数组的元素arr[4] = "update";console.log(arr[4]);//update//删除数组的元素arr.splice(4, 1); //第一个参数表示从下标为4的位置开始删除,第二个参数表示要删除的元素数量.console.log(arr[4]);//undefined 元素已经删除,如果元素不存在,则结果为undefined.console.log(arr.length); //4</script>

注意:

1.如果下标超出范围读取元素,则结果为undefined

2.不要给数组名直接赋值,此时数组中的元素会全部消失

函数

语法格式

创建函数/函数声明/函数定义

function 函数名(形参列表) {
        函数体;

        return 返回值;

}

//函数调用

函数名(实参列表) //不考虑返回值

返回值 = 函数名(实参列表) //考虑返回值

函数定义并不会执行函数体内的内容,必须要调用才会执行.调用几次就执行几次.

function hello() {console.log("hello");
}
//如果不调用函数,则不打印执行语句.
hello();

调用函数的时候函数内部执行,函数结束时回到调用位置继续执行.调用几次就会执行几次.

函数的定义和调用先后顺序没有要求.(这一点和变量不同,变量是先定义后使用).

hello();
function hello() {console.log("hello");
}

 关于参数个数

实参和形参之间的参数可以不匹配.但是实际开发一般要求形参和实参个数匹配.

1.如果实参个数比形参多,则多出来的参数不参与函数运算.

sum(10, 20, 30); //30

2.如果实参个数比形参少,则返回undefined.

JS相比于其它语言比较灵活,实际上这种灵活性往往不是好事

函数表达式

另一种函数表达方式.

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

此时形如function(){}这样的写法定义了一个匿名函数,然后将这个匿名函数用一个变量来表示

后面就可以通过add变量来调用函数了.

对象

在JS中,字符串,数组,数值,函数都是对象.

每个对象都有若干的属性和方法.

属性:事物的特征. 方法:事物的行为.

JavaScript的对象和Java的对象概念基本一致.只是具体的语法表项形式差别较大.

1.使用字面量创建对象.[常用]

使用{}创建对象.

var a = {}; //创建了一个空的对象
var student = {name: '蔡徐坤',height: 175,weight: 140,sayHello: function() {console.log("hello");}
};

使用{}创建对象

属性和方法使用键值对的形式来组织.

键值对之间使用 , 分割.最后一个属性后面的,可有可无.

键和值之间使用 : 分割 .

方法的值是一个匿名函数.

使用对象的属性和方法:

//1.使用 . 成员访问运算符来访问属性,'.'可以理解为"的"
console.log(student.name);
//2.使用[]来访问属性,此时属性应该加上引号
console.log(student['height']);
//3.调用方法,别忘了加上()
student.sayHello();

2.使用new Object来创建对象.

var student = new Object();
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayHello = function() {console.log("hello");
}
console.log(student.name);
console.log(student['height']);
student.sayHello();

注意:使用{}创建对象也可以随时使用student.name = '蔡徐坤';这样的方式来新增属性.

3.使用构造函数来创建对象.

function 构造函数名(形参) {

        this.属性值 = 值;

        this.方法 = function...

}

var obj = new 构造函数名(形参); 

注意:

1.在构造函数内部使用this关键字来表示当前构造的对象

2.构造函数的首字母一般是大写的.

3.构造函数的函数名可以是名词.

4.构造函数不需要return

5.创建对象的时候必须使用new关键字. 

        function Cat(name, type, sound) {this.name = name;this.type = type;this.miao = function () {console.log(sound); // 别忘了作⽤域的链式访问规则}}var mimi = new Cat('咪咪', '中华田园猫', '喵');console.log(mimi);mimi.miao();

 

 

 

 

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

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

相关文章

【LeetCode】876_链表的中间结点_C

题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 https://leetcode.cn/problems/middle-of-the-linked-list/description/ 示例 提示&#xff1a; 链表的结点数范围是 [1, 100]1 <…

Subversion svn 开源的版本控制系统入门介绍 VCS

拓展阅读 Subversion 开源的版本控制系统入门介绍 VCS Git 开源的版本控制系统-01-入门使用介绍 Git 开源的版本控制系统-02-base usage 基本用法 Git 开源的版本控制系统-03-时间数据回溯 Git 开源的版本控制系统-04-branch manage 分支管理 Git 开源的版本控制系统-05-…

UE5数字孪生系列笔记(一)

智慧城市数字孪生系统 虚幻引擎连接数据库 将自己的mysql版本的libmysql.dll替换掉插件里面的libmysql.dll 然后将这个插件目录复制到虚幻项目目录下 然后添加这个插件即可 新建一个UMG&#xff0c;添加一个按钮试试&#xff0c;数据库是否连接 将UI添加到视口 打印是否连接…

力扣爆刷第87天之hot100五连刷21-25

力扣爆刷第87天之hot100五连刷21-25 文章目录 力扣爆刷第87天之hot100五连刷21-25一、240. 搜索二维矩阵 II二、160. 相交链表三、206. 反转链表四、234. 回文链表五、141. 环形链表 一、240. 搜索二维矩阵 II 题目链接&#xff1a;https://leetcode.cn/problems/search-a-2d-…

前端每日一练 :相邻元素、嵌套元素Margin 塌陷、合并问题如何额解决?

相邻元素外边距塌陷合并 表现示例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…

Python与FPGA——sobel边缘检测

文章目录 前言一、sobel边缘检测二、Python sobel边缘检测三、FPGA sobel边缘检测总结 前言 边缘存在于目标、背景区域之间&#xff0c;它是图像分割所依赖的较重要的依据&#xff0c;也是图像匹配的重要特征。边缘检测在图像处理和计算机视觉中&#xff0c;尤其在图像的特征提…

LVS----DR模式

一、LVS-DR工作原理 1、LVS-DR数据包流向分析 客户端发送请求到Director Server (负载均衡器)&#xff0c;请求的数据报文&#xff08;源IP是CIP&#xff0c;目标IP是VIP&#xff09;到达内核空间。Director Server 和Real Server 在同一个网络中&#xff0c;数据通过二层数据…

turtle海龟画图

10. 画笔设置 1. 画笔设置 海龟库绘制时的线条是可以设置的&#xff0c;例如画笔的颜色&#xff0c;方法名如下&#xff1a; 方法名方法说明.pencolor(‘red’)设置画笔颜色&#xff0c;例如红色 import turtle #导入海龟图库 turtle.shape(turtle) #召唤海龟 turtle.pencolo…

【vue3之组合式API及其新特性】

组合式API及其新特性 一、setup1.写法2.如何访问3.语法糖4.同步返回对象 二、reactive()和ref()1.reactive()2.ref() 三、computed四、watch函数1.侦听单个数据2.侦听多个数据3. immediate4. deep5.精确侦听对象的某个属性 五、生命周期函数六、组件通信1.父传子2. 子传父 七、…

Java开发从入门到精通(一):Java的基础语法进阶

Java大数据开发和安全开发 &#xff08;一&#xff09;Java注释符1.1 单行注释 //1.2 多行注释 /* */1.3 文档注释 /** */1.4 各种注释区别1.5 注释的特点1.5 注释的快捷键 &#xff08;二&#xff09;Java的字面量&#xff08;三&#xff09;Java的变量3.1 认识变量3.2 为什么…

(亲测可用)Adobe Photoshop 2024下载与安装

背景介绍&#xff1a;Adobe Photoshop 2024 是全球最受欢迎的图像编辑软件之一&#xff0c;2024年的版本带来了一系列令人印象深刻的功能&#xff1a; AI增强的自动选择和蒙版工具&#xff1a;现在&#xff0c;用户可以更轻松地选择和处理复杂的图像元素。更多的3D渲染功能&…

如何使用宝塔面板搭建Discuz并结合cpolar实现远程访问本地论坛

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

第3部分 原理篇3可验证凭证(VC)(2)

3.3.3. 可验证凭证生态 3.3.3.1. 生态中的角色和概念 本聪老师&#xff1a;问大家个问题&#xff0c;我们生活中常见的实物凭证包括哪些信息&#xff1f; 小天&#xff1a;以身份证为例&#xff0c;包括姓名、性别、出生年月、住址等个人信息&#xff0c;还有发证部门&#…

【嵌入式——QT】Model/View

【嵌入式——QT】Model/View 基本原理数据模型视图组件代理Model/View结构的一些概念QFileSystemModelQStringListModelQStandardItemModel自定义代理 基本原理 GUI应用程序的一个很重要的功能是由用户在界面上编辑和修改数据&#xff0c;典型的如数据库应用程序&#xff0c;数…

重学SpringBoot3-@EnableConfigurationProperties注解

重学SpringBoot3-EnableConfigurationProperties注解 1. 引言2. EnableConfigurationProperties 的作用3. 使用示例4. 总结 1. 引言 Spring Boot 提供了一种便捷的方式来管理和校验应用程序的配置&#xff0c;即通过类型安全的配置属性。EnableConfigurationProperties 注解在…

pycharm 自定义TODO类注释以及其高亮颜色

大体介绍 使用自定义TODO是为了方便看&#xff0c;并且快速定位到位置 上面是为了进行标记&#xff0c;下面是让哪些标记可以过滤掉&#xff08;自定义过滤规则&#xff09;&#xff0c;从而在pycharm下面的TODO可以显示并过滤 如何设置&#xff1f; Setting-Preferences-Ed…

练习 5 Web [GXYCTF2019]BabyUpload

[GXYCTF2019]BabyUpload 猜测直接上传txt会被过滤&#xff0c;提示“上传类型也太露骨了吧&#xff01;”按经验传入一个"muma.phtml" 提示过滤了“ph”相关的后缀 传入muma.jpg等图像格式&#xff0c;提示表明复原并检测了文件内容 审查文件后缀Context-type 不能…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第3章 开发板直连电脑配置方法(不能上外网)

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

2024 年 AI 辅助研发趋势:从研发数字化到 AI + 开发工具 2.0,不止于 Copilot

在上一年里&#xff0c;已经有不少的企业在工具链上落地了生成式 AI&#xff0c;结合我们对于这些企业的分析&#xff0c;以及最近在国内的一些 “新技术” 趋势&#xff0c;诸如于鸿蒙原生应用的初步兴起。从这些案例与趋势中&#xff0c;我们也看到了一些新的可能方向。 结合…

【 HTML 及浏览器 】DOM 树

“人生如同弓弦&#xff0c;经历拉扯才能发出激越的音响。在坎坷的拉扯中&#xff0c;用坚定的力量拉近梦想的弓弦&#xff0c;让每一次的发声都是生命的高潮。” - 约瑟夫康拉德 DOM树&#xff1a;构建动态网页的骨架 在互联网的世界里&#xff0c;网页就像是一个个生动的故事…