【JavaScript】JS核心语法及函数

文章目录

  • 一、初识 JS
  • 二、JS 核心语法
    • 2-1 变量
    • 2-2 数据类型
      • typeof
      • String 对象
    • 2-3 数组
      • 创建数组
      • 常用属性方法
    • 2-4 运算符号
      • 加号运算符 +
      • 减号运算符 -
      • 比较运算符
      • 逻辑运算符
    • 2-5 控制语句
      • for-in
      • break
      • continue
  • 三、函数
    • 3-1 常用系统函数
    • 3-2 自定义函数
      • 函数声明
      • 函数调用
    • 3-3 创建对象

一、初识 JS

JavaScript 是一种基于对象和事件驱动的、并具有安全性能的脚本语言。

JavaScript 特点

  • 向 HTML 页面中添加交互行为

  • 脚本语言,语法和 Java 类似

  • 解释性语言,边执行边解释

JavaScript 组成

​ ECMAScript:基础语法

​ DOM:操作 HTML 元素

​ BOM:操作浏览器(前进 后退 刷新)

JavaScript 执行原理
在这里插入图片描述

JavaScript 引用方式

  • 内部 JS:使用 <script> 标签

    <script type="text/javascript">...</script>
    
  • 外部 JS:引入文件

    <script src="export.js" type="text/javascript"></script>
    
  • 行内 JS:在 HTML 标签中,使用触发属性

    <input name="btn" type="button" value="弹出消息框" onclick="javascript:alert('欢迎你');"/>
    

JavaScript 注释

单行注释

alert("恭喜你!注册会员成功"); // 在页同上弹出注册会员成功的提示框

多行注释

/*
使用 for 循环运行 “document.write("<h3>Hello World</h3>");” 5次
使用 document.write 在页面上输出 “Hello World” 
*/

JavaScript 输入输出

// alert() 警告框或信息框
[window.]alert("提示信息");// prompt() 输入框
[window.]prompt("提示信息", "输入框的默认信息");// confirm() 询问框
[window.]confirm("询问信息");

JavaScript 核心语法

变量、数据类型、数组、运算符号、控制语句、注释、输入/输出、语法约定


二、JS 核心语法

2-1 变量

声明变量的三种方式

​ var : ESCMScript5

​ let : ESCMScript6

​ const : ESCMScript6

变量命名规则(严格区分大小写)

  1. 首字母必须是(a-zA-Z)或者下划线_或者$(首字母尽量不要大写)

  2. 其他字符可以是字母或者下划线或者数字或者$

  3. 不可以用系统的关键字、保留字作为变量名

  4. 多个单词—驼峰命名

var userName;
var userLoginFlag;
// 关键字 var 可省略(但不建议)

变量声明

<script>var name; // 声明变量console.log("1",name); // 输出: 1var name = "天气"; // 声明变量并赋值console.log("2",name); // 输出: 2 天气// 声明赋值 window 对象下有 name:window.namevar age;console.log("1",age); // 输出: 1 undefinedvar age = 18;console.log("2",age); // 输出: 2 18
</script>
<script>// 先声明变量再赋值var age;age = 18;console.log(age); // 输出: 18// 声明并赋值后修改(覆盖)var age = 18;age = 24;console.log(age); // 输出: 24// 单一 var 模式var a,b = 18,c,d = 20;console.log(a,b,c,d); // 输出: undefined 18 undefined 20// 只声明变量不赋值var a; console.log(a);// 不声明变量只赋值(隐式声明)b = 10;console.log(b); // 输出: 10 --> window.b = 10// 不声明变量也不赋值c;console.log(c); //报错
</script>

2-2 数据类型

数据类型分类

基本数据类型(栈stack):

数据类型名称描述
number数字包括整数和浮点数
string字符一组被引号(单引号或双引号)括起来的文本数据
boolean布尔true / false
undefined未定义变量声明了但未赋值
null空值表示空值或无值
Symbol唯一值ES6 引入 唯一且不可变的值 通常用于对象属性的唯一标识
BigInt整数ES11 引入 表示任意精度的整数
  • undefined:表示变量已声明但尚未赋值,或者函数没有返回值。它通常是 JavaScript 引擎自动赋给未初始化变量的值。
  • null:表示空的对象指针,通常用来指示“没有值”或“无对象”。开发者在代码中显式地将变量设置为 null,表示变量当前没有实际的对象或值。

引用数据类型(堆heap):

数据类型描述
Object包括普通对象、数组、函数、日期等
Array特殊类型的对象,用于存储有序数据
Function特殊的对象,用于封装可调用的代码块
Date用于处理日期和时间
RegExp用于正则表达式

基本类型包装类

​ Boolean ----> 基本数据类型包装成 Boolean 对象

​ Number ----> 基本数据类型包装成 Number 对象

​ String ----> 基本数据类型包装成 String 对象

typeof

typeof 检测变量的返回值

console.log(typeof 123); // 输出: number
console.log(typeof("测试")); // 输出: string

String 对象

string 字符串类型

//单双引号
var str1 = "双引号"var str2 = '单引号';//反引号(es6模板字符串)
var str3 = `北京市朝阳区`;   
var msg = `
我还可以
多行输出`;

string 基本数据类型和 String 对象之间的关系

// 基本数据类型 string
let str = "hello";// 使用基本数据类型调用方法时,JavaScript 会将其临时转换为 String 对象
console.log(str.toUpperCase()); // 输出: "HELLO"// 也可以显式地创建一个 String 对象
let strObj = new String("world");// 使用 String 对象的方法
console.log(strObj.toLowerCase()); // 输出: "world"// 比较基本数据类型 string 和 String 对象
console.log(typeof str);    // 输出: "string"
console.log(typeof strObj); // 输出: "object"// 基本数据类型 string 和 String 对象的比较
console.log(str === strObj); // 输出: false
方法名称说明
charAt(index)返回在指定位置的字符
indexOf(str, index)查找某个指定的字符串在字符串中首次出现的位置
substring(index1, index2)返回位于指定索引之间的字符串 前闭后开
split(str, limit)将字符串分割为字符串数组
// charAt(index)
let str = "hello";
console.log(str.charAt(1)); // 输出: "e"// indexOf(str, index)
let str = "hello world";
console.log(str.indexOf("l")); // 输出: 2// substring(index1, index2)
let str = "hello world";
console.log(str.substring(0, 5)); // 输出: "hello"// split(str, limit)
let str = "one,two,three,four";
let arr = str.split(",", 2);
console.log(arr); // 输出: ["one", "two"]

2-3 数组

创建数组

var 数组名称 = new Array(size);

示例

var fruit = new Array("apple", "orange", " peach","banana");var fruit = new Array(4);
fruit [0] = " apple ";
fruit [1] = " orange ";
fruit [2] = " peach ";
fruit [3] = " banana ";var fruit = ["apple", "orange", " peach","banana"]

常用属性方法

类别名称描述
属性length设置或返回数组中元素的数目
方法join()把数组的所有元素放入一个字符串,通过一个的分隔符进行分隔
sort()对数组排序
slice(start, end)返回数组的一部分,前闭后开
push(…elements)向数组末尾添加一个或更多元素,返回新长度
unshift(…elements)向数组开头添加一个或多个元素,返回新长度
pop()从数组末尾移除最后一个元素,返回该元素
shift()从数组开头移除第一个元素,返回该元素
let arr = [1, 2, 3];
console.log(arr.length); // 输出: 3arr.push(4);
console.log(arr); // 输出: [1, 2, 3, 4]console.log(arr.pop()); // 输出: 4
console.log(arr); // 输出: [1, 2, 3]console.log(arr.shift()); // 输出: 1
console.log(arr); // 输出: [2, 3]arr.unshift(1);
console.log(arr); // 输出: [1, 2, 3]console.log(arr.slice(0, 2)); // 输出: [1, 2]// forEach(callback):对数组的每个元素执行一次 callback 函数
arr.forEach((item) => console.log(item));
// 输出: 1 2 3

2-4 运算符号

类型运算符
算术运算符+ - ***** / % ++
赋值运算符= += -=
比较运算符> < >= <= == != === !==
逻辑运算符&& || !

加号运算符 +

// 加法运算
var num = 1 + 2;      // 3
var flag = true + 1;  // 2// 加号拼接
var str = "1" + 2;              // "12"
var a = "aa" + true + "1";      // "aatrue1"
var b = "aa" + true + (2 + 2);  // "aatrue4"
var b2 = "aa" + true + 2 + 2;   // "aatrue22"// 一元加号将数据转化为数字类型
var c = +"2";       // 2 (number)
var d = +"false";   // NaN
var e = +"你好";    // NaN

减号运算符 -

var a1 = 2 - 1;      // 1 (number)
var a2 = "2" - 1;    // 1 (number)
var a3 = "true" - 3; // NaN (number) // 能转换为 number 的 string 就转,不能转就 NaN
var a4 = -3;         // -3 (number)
var a5 = - "5";      // -5 (number) // 调用 number 进行转换
var a6 = - true;     // -1 (number)
var a7 = - false;    // -0 (number)

比较运算符

运算符名称描述
==相等运算符比较不同类型时 先把数据进行转换然后比较
===全等运算符比较过程比较严格时 没有任何数据类型的相互转换
!=不相等强制转换
!==全不等要求严格相等运算得到的结果 然后取反
console.log(true == false);      // false
console.log(true == "true");     // false
console.log(Number("true"));     // NaNconsole.log("6" == 6);           // true
console.log("abc" == "abc");     // true
console.log("abc" == "Abc");     // falseconsole.log("6" === 6);          // false
console.log("6" !== 6);          // true
console.log(undefined == null);  // true
console.log(undefined === null); // false

逻辑运算符

运算符名称描述
&&逻辑与遇到 true 通过 false 停止 全为 true 时返回最后一个操作数
||逻辑或遇到 false 通过 true 停止

&& 优先级高于 ||

var num = "false" && 1;// 1
var num1 = "false" && 1 || "abc" && 0 || false && "false";// 1 || 0 || false// 1
var num2 = 0 || false || "false" && 1 && "真的" && "还是真的";// 0 || false || "还是真的"// "还是真的"
var num3 = "false" && "" || "abc" && 0 || false && "false" && true || "abc";// "" || 0 || false || "abc"// "abc"

在 JavaScript 中,&&(逻辑与)运算符会首先对其左操作数进行类型转换,判断其布尔值。如果左操作数为 false 或转换为 false,则短路,直接返回左操作数。如果左操作数为 true,则返回右操作数。 ||(逻辑或)运算符则相反。

在 JavaScript 中,假值(falsy values)包括:

  • false
  • 0(包括 -0+0
  • ""(空字符串)
  • null
  • undefined
  • NaN(非数值)

2-5 控制语句

for-in

var fruit = [ "apple", "orange", "peach","banana"]; 
for(var i in fruit){document.write(fruit[i] + "<br/>");
}

break

<script type="text/javascript">var i = 0;for(i = 0; i <= 5; i++){if(i == 3){break;}document.write("这个数字是:" + i + "<br/>");}
</script>
<!--
这个数字是:0
这个数字是:1
这个数字是:2
-->

continue

<script type="text/javascript">var i = 0;for(i = 0; i <= 5; i++){if(i == 3){continue;}document.write("这个数字是:"+i+"<br/>");}
</script>
<!--
这个数字是:0
这个数字是:1
这个数字是:2
这个数字是:4
这个数字是:5
-->

三、函数

3-1 常用系统函数

函数描述使用示例
parseInt(“str”)将字符串转换为整型数字parseInt("86"); // 86
parseFloat(“str”)将字符串转换为浮点型数字parseFloat("34.45") // 34.45;
isNaN()判断值是否为NaN(非数值)isNaN("abc"); // true
isFinite()判断值是否为有限数字isFinite(123); // true
isFinite(Infinity); // false
Number()将值转换为数字Number("123.45"); // 123.45
String()将值转换为字符串String(123); // "123"

3-2 自定义函数

函数声明

// 声明函数
function 函数名(形参1, 形参2, 形参3...) {// JavaScript 语句[return 返回值]
}// 调用函数
函数名(实参1, 实参2, 实参3...);

函数调用

调用无参函数,输出 5 次 " 欢迎学习 JavaScript "

function study( ){for(var i = 0; i < 5; i++){document.write("<h4>欢迎学习JavaScript</h4>");}
}
<input name="btn" type="button"value="显示5次欢迎学习JavaScript"  onclick="study( )" />

单击此按钮时,调用函数 study( ), 执行函数体中的代码

调用有参函数,根据输入的次数,显示 " 欢迎学习 JavaScript "

function study(count){for(var i = 0; i < count; i++){document.write("<h4>欢迎学习JavaScript</h4>");}
}
<input name="btn" type="button" value="请输入显示欢迎学习JavaScript的次数"onclick="study(prompt('请输入显示欢迎学习JavaScript的次数:',''))" />

单击此按钮时,调用函数 study(count),执行函数体中的代码

3-3 创建对象

function student(n,a){this.name = n;this.age = a;this.show = function(msg){document.write(this.name + " : " + msg);}
}
var stul = new student("张三",18);
var stu2 = new student("李四",17);
stu1.show("这是函数");

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

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

相关文章

Spring WebFlux 响应式概述(1)

1、响应式编程概述 1.1、响应式编程介绍 1.1.1、为什么需要响应式 传统的命令式编程在面对当前的需求时的一些限制。在应用负载较高时&#xff0c;要求应用需要有更高的可用性&#xff0c;并提供低的延迟时间。 1、Thread per Request 模型 比如使用Servlet开发的单体应用&a…

MatrixVT: Efficient Multi-Camera to BEV Transformation for 3D Perception

本文提出了一种高效的多摄像头到鸟瞰图 (BEV) 视图转换方法&#xff0c;用于 3D 感知&#xff0c;称为 MatrixVT。现有的视图转换器要么转换效率低下&#xff0c;要么依赖于特定于设备的操作符&#xff0c;阻碍了 BEV 模型的广泛应用。相比之下&#xff0c;我们的方法仅使用卷积…

达梦8-主备集群故障之故障备库剔除与重新加入

实验环境 操作系统版本 银河麒麟Linux kylin10 4.19.90-24.4.v2101.ky10.x86_64 数据库版本 DM Database Server 64 V8 ##主库信息 内网IP-[MAL_HOST 192.168.50.100]外网IP-[MAL_INST_HOST 192.168.101.11] 主库实例名-[DM01] OGUID45335 ##备库信息 内网IP-[MAL_HOST …

这些都伦敦银结算时间 第二个尤其值得关注

伦敦银结算时间是什么时候呢&#xff1f;伦敦银虽说号称是24小时交易的品种&#xff0c;实际上每个平台都会在一个交易日中选定一定的时间停盘进行结算&#xff0c;在这些时间投资者没法交易&#xff0c;市场也不会波动。那么&#xff0c;伦敦银结算时间是什么时候&#xff1f;…

京东云主机和云服务器有啥区别?轻量云主机就是轻量应用服务器吗?

京东云主机和云服务器有啥区别&#xff1f;轻量云主机就是轻量应用服务器吗&#xff1f;云主机就是云服务器的意思&#xff0c;是京东云给自家云服务器取的名字&#xff0c;阿里云叫云服务器ECS&#xff0c;腾讯云叫云服务器CVM&#xff0c;京东云服务器叫云主机&#xff0c;京…

人数识别 人员超员识别系统 作业区域超员预警系统 ai#YOLO视觉

在当今复杂的生产作业与社会管理场景中&#xff0c;人员管理的精准性和高效性变得愈发重要。人数识别、人员超员识别系统、作业区域超员预警系统以及特殊岗位人员达标监测等&#xff0c;都是保障安全生产、提高运营效率和维护社会秩序的关键要素。随着人工智能(AI)技术的飞速发…

客户案例 | Airbus Helicopters借助仿真技术实现节能安全的驾驶舱设计

大家都知道&#xff0c;太阳眩光、驶近的车辆照射的灯光或雨水的反射会分散注意力。对于驾驶员来说光学失真更具挑战性&#xff0c;因为这关乎驾驶安全。除了外部照明条件外&#xff0c;驾驶员通常还会面临‌内部照明‌挑战&#xff0c;比如车辆指示灯面板上的重要信息无法清晰…

Ambari 你想知道的都在这里

&#x1f468;‍&#x1f4bb; 关于我 大家好&#xff0c;我叫小饕。一位末流系统架构师&#xff0c;深耕大数据技术多年&#xff0c;对前端、后端、中间件和运维有着丰富的经验和深刻的理解。在过去的几年里&#xff0c;我主要专注于Ambari的研究和探索&#xff0c;通过不断的…

证件照片一键生成软件有哪些?这里看5个

想要一张完美的证件照&#xff0c;却不想花大价钱去照相馆&#xff1f; 别担心&#xff0c;现在有多种免费应用可以帮助你在家轻松制作证件照片。 从调整尺寸到修改背景&#xff0c;这些应用功能齐全&#xff0c;让你的证件照看起来既专业又符合要求。 下面就来看看这5个不花…

C#将部分Controls数据导入对象并存入ini中

目录 1.遍历控件和属性得到控件的值 2.利用FieldInfo的getSet函数设置类对象数据 3.Ini简易类库编写 4.存入对象转换为json存入ini 5.效果展示 在日常的Winform设计工作中&#xff0c;将控件中的数据导出到对应属性或者字段中&#xff0c;再进行保存是经常会用到的技巧&#x…

【HTML并不简单】笔记3-你不知道的列表元素和html、body

文章目录 无序列表menuol的其他属性typestart和valuereversed 定义列表dl、dt、ddhtml与body关联性overflow 桌面端和移动端的滚动条 《HTML并不简单&#xff1a;Web前端开发精进秘籍》张鑫旭 笔记 无序列表menu <menu>元素可以看成是<ul>元素的平行替代&#xff…

网源高科产品总监郎磊受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 北京网源高科软件有限公司产品交付部门产品总监、行业解决方案首席咨询顾问郎磊先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“什么样的AI工具&#xff0c;才是项目经理的…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【285-296】

文章目录 285. 为什么需要继承286. 继承原理图287. 继承快速入门288. 289. 290. 291. 292. 继承使用细节1,2,3,4,5288.1 继承给编程带来的便利288.2 继承的深入讨论/细节问题 293. 继承本质详解294. 继承课堂练习1295. 继承课堂练习2296. 继承课堂练习3 285. 为什么需要继承 28…

相亲交友系统的商业模式探讨

在撰写关于相亲交友系统的商业模式探讨时&#xff0c;附带示例代码可能不太合适&#xff0c;因为软文通常是面向非技术读者&#xff0c;讲述商业模式、用户体验等方面的内容。不过&#xff0c;为了满足您的需求&#xff0c;我可以尝试结合一些简单的伪代码&#xff08;模拟代码…

织物缺陷分割系统源码&数据集分享

织物缺陷分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-Faster-EMA&#xff06;yolov8-seg-act等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al lnn…

UE5安卓,多指点击时会调出控制台

参考文章&#xff1a; How to turn off "console window" on swipe (my Lemurs keep opening it!) - Platform & Builds / Mobile - Epic Developer Community Forums (unrealengine.com) 准确来说是4只手指同时在屏幕中按下。这个控制台能像编辑器那样&#xf…

vue项目刷新后h5样式失效

vue项目刷新后h5样式失效 今天遇到一个bug&#xff0c;有一个Element的message组件&#xff0c;用它做的一个进度条&#xff0c;它是写在一个页面上&#xff0c;并且是用js控制dom元素的 web端一切正常&#xff0c;h5如果从别的页面跳过来也正常&#xff0c;但是&#xff0c;H…

IT行业哪些证书可以应对就业难?

作为IT运维专业人士&#xff0c;持续增强自身的专业技能和知识是提升职场竞争力、实现升职加薪的关键途径。 下面为大家搜罗了5本适合IT运维人员考取的证书。 一、ITSS认证 ITSS&#xff0c;即信息技术服务标准&#xff0c;是一套涵盖了IT服务领域的标准库和方法论。 这是我…

Python 卸载所有的包

Python 卸载所有的包 引言正文 引言 可能很少有小伙伴会遇到这个问题&#xff0c;当我们错误安装了一些包后&#xff0c;由于包之间有相互关联&#xff0c;导致一些已经安装的包无法使用&#xff0c;而由于我们已经安装了很多包&#xff0c;它们的名字我们并不完全知道&#x…

在使用yarn下载依赖时会报超时问题,解决贴

在使用yarn下载依赖时会报超时问题&#xff0c;解决贴 这句话表示网络超时 There appears to be trouble with your network connection. Retrying1、我们先使用命令查看使用使用的是国外的镜像。 yarn config list2、然后查看代码 3、更换镜像&#xff0c;设置使用国内镜像…