【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.rhkb.cn/news/442721.html

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

相关文章

家里养有宠物应该用哪款宠物空气净化器比较好?哪款最能吸毛?

这不是国庆节刚过吗&#xff0c;我的小猫终于是平安的度过了在农村生活的时光&#xff0c;之前还担心会不会被爸妈嫌弃&#xff0c;这下好了&#xff0c;嫌弃也过了国庆节。 但是一把猫咪带回出租房&#xff0c;由于几天不在房子里待&#xff0c;猫咪对熟悉的环境又特别激动&a…

C语言贪吃蛇

#只讲逻辑不讲一些基础&#xff0c;基础大概过一遍就行# project-one: 无 (gitee.com)仓库里面有原代码 一、基础工作 1、先将你的编译器换成32位环境&#xff0c;也就是x86&#xff0c; 如果是控制台主机窗口则管&#xff0c;若不是需要改为控制台主机窗口 打开运行窗口后点…

构建宠物咖啡馆:SpringBoot框架的实现策略

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于Spring Boot的宠物咖啡馆平台的设计与…

Authentication Lab | IP Based Auth Bypass

关注这个靶场的其它相关笔记&#xff1a;Authentication Lab —— 靶场笔记合集-CSDN博客 0x01&#xff1a;IP Based Auth Bypass 前情提要 有些开发人员为了图方便&#xff0c;会给站点设置一个 IP 白名单&#xff0c;如果访问站点的用户的 IP 在白名单内&#xff0c;则允许访…

PDSCH(物理下行共享信道)简介

文章目录 PDSCH&#xff08;物理下行共享信道&#xff09;简介1. Transport block CRC attachment2. LDPC base graph selection3. Code block segmentation And Code Block CRC Attachment4. Channel Coding5. Rate Matching6. Code Block Concatenation7. Scrambling8. Modul…

react自定义prolayout的展开收起

关于prolayout组件&#xff1a;ProLayout高级布局&#x1f3c6; 让中后台开发更简单 包含 table form 等多个组件。https://procomponents.ant.design/components/layout // tsx文件 import ProLayout from ant-design/pro-layout; ... const [collapsed,setCollapsed]useStat…

全网首发Windows Server 2019 AD 域控降级与退域的全面指南

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;。 “ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…&#xff08;每天更新不间断&#xff0c;福利…

微信小程序——婚礼邀请函

一、界面设计 首页&#xff1a; 精美的婚礼主题背景图&#xff0c;可能是新人的婚纱照或浪漫的插画。温馨的欢迎语&#xff0c;如 “欢迎参加我们的婚礼”。一个 “打开邀请函” 的按钮&#xff0c;引导用户进入邀请函详情页面。 邀请函详情页面&#xff1a; 顶部展示新人的照片…

【数据结构与算法】Divide and Conquer

4.4 Divide and Conquer 1) 概述 分治思想 将大问题划分为两个到多个子问题子问题可以继续拆分成更小的子问题&#xff0c;直到能够简单求解如有必要&#xff0c;将子问题的解进行合并&#xff0c;得到原始问题的解 之前学过的一些经典分而治之的例子 二分查找快速排序归并…

【C语言】数组练习

【C语言】数组练习 练习1&#xff1a;多个字符从两端移动&#xff0c;向中间汇聚练习2、二分查找 练习1&#xff1a;多个字符从两端移动&#xff0c;向中间汇聚 编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 练习2、二分查找 在⼀个升序的数组中查找指…

国庆作业

day1 1.开发环境 Linux系统GCCFDBmakefilesqlite3 2.功能描述 项目功能: 服务器&#xff1a;处理客户端的请求&#xff0c;并将数据存入数据库中&#xff0c;客户端请求的数据从数据库进行获取&#xff0c;服务器转发给客户端。 用户客户端&#xff1a;实现账号的注册、登…

【专题】数据库系统的基本原理

1. 数据库系统概述 1.1. 数据库系统的应用 电信业、银行业、金融业、销售业、联机的零售商、大学、航空业、人力资源、制造业等等。 1.2 数据库系统的概念 (1) 数据&#xff08;Data&#xff09; 数据是数据库存储的基本对象。是描述现实世界中各种具体事物或抽象概念的、可…

数据结构-5.1.树的定义和基本术语

一.树的基本概念&#xff1a; 1.根结点&#xff1a;最顶层的结点&#xff0c;有且仅有一个&#xff0c;没有前驱&#xff1b; 2.叶子结点&#xff1a;不能再有子结点&#xff0c;没有后继&#xff1b; 3.结点&#xff1a;用于存数据&#xff1b; 4.也有前驱和后继的说法&…

Spring Boot快速入门:HelloWorld示例

Spring Boot是一个非常流行&#xff0c;受欢迎的框架&#xff0c;它不仅常用于构建传统的单体式MVC应用程序&#xff0c;同时也非常适合用于搭建微服务架构。对于 Web 应用程序&#xff0c;Spring Boot 提供了用于创建 REST API、处理 HTTP 请求和使用 Thymeleaf 等模板引擎呈现…

介绍一下SAP 函数 NUMBER_GET_NEXT的妙用——获取SAP编码OBJECT

NUMBER_GET_NEXT 是 SAP 中用于获取下一个可用编号的函数模块&#xff0c;通常用于生成唯一的编号或序列号。这个函数模块的妙用在于它能够确保编号的唯一性和连续性&#xff0c;适用于需要生成订单号、发票号或其他业务对象编号的场景。 我在写ABAP程序时经常要调用这个函数来…

Oracle 数据库安装及配置

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

LSTM的变体

一、GRU 1、什么是GRU 门控循环单元&#xff08;GRU&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;它通过引入门控机制来控制信息的流动&#xff0c;从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出&#xff0c;它简化了…

45岁被裁员的程序员,何去何从?

在当今快速变化的技术行业&#xff0c;职业生涯的稳定性受到挑战。在45岁被裁员&#xff0c;对很多程序员来说&#xff0c;可能是一种惊慌失措的体验。然而&#xff0c;这个阶段也可以被视为一个重新审视和调整方向的机会。本文将对可能的出路进行全方位的分析&#xff0c;并提…

PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程

介绍&#xff1a; 真正的好东西&#xff0c;搞网站优化seo从业必备。可以快速提升网站权重&#xff0c;带来的流量哗哗的 PHP泛目录生成源码 可生成新闻页面和关键词页面 带使用方法视频教程 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果…

[简单实践]Noisy Print - 自制基于加性噪声模型的简易降噪器

NoisyPrint 最近在学习的过程中&#xff0c;突然想起一个在Adobe Audition中用过的功能。 为什么会想到这个功能呢&#xff0c;因为在我使用DeepFilter的过程中&#xff0c;我发现对于一些低信噪比的信号来说&#xff0c;DeepFilter很容易出现过拟合现象&#xff0c;导致音源…