【JavaScript】JS核心语法及函数

news2024/12/26 11:22:31

文章目录

  • 一、初识 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); // 输出: 1
	var name = "天气"; // 声明变量并赋值
	console.log("2",name); // 输出: 2 天气

    // 声明赋值 window 对象下有 name:window.name
    
    var age;
	console.log("1",age); // 输出: 1 undefined
	var 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); // 输出: 3

arr.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"));     // NaN

console.log("6" == 6);           // true
console.log("abc" == "abc");     // true
console.log("abc" == "Abc");     // false

console.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.coloradmin.cn/o/2197165.html

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

相关文章

RISC-V知识点目录

分支预测 分支预测概述https://blog.csdn.net/zhangshangjie1/article/details/136947089?sharetypeblogdetail&sharerId136947089&sharereferPC&sharesourcezhangshangjie1&spm1011.2480.3001.8118分支指令的方向预测https://blog.csdn.net/zhangshangjie1/a…

高效微调理解(prompt-tuning,p-tuning v1,p-tuning v2,lora)

高效微调&#xff08;prompt-tuning&#xff0c;p-tuning v1&#xff0c;p-tuning v2&#xff0c;lora&#xff09; 1.prompt-tuning&#xff1a; 例子理解&#xff1b;保持原本模型参数不变&#xff0c;通过训练提示词的参数调整prompt&#xff0c;使其与下游任务匹配。 例子…

HCIP-HarmonyOS Application Developer 习题(八)

&#xff08;填空&#xff09;1、声明式开发范式中使用装饰器( )装饰的结构体具有组件化能力&#xff0c;能够成为一个自定义组件。 答案&#xff1a;component 分析&#xff1a;component 装饰的struct表示该结构体具有组件化能力&#xff0c;能够成为一个独立的组件&#xff…

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

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

企业升级首选:Windows 11 24H2 LTSC 纯净企业版!

今日&#xff0c;系统之家小编给大家带来最新的Windows11 24H2 LTSC 2024 纯净企业版下载&#xff0c;该版本系统是离线制作而成&#xff0c;各种各样的捆绑软件也都删除了&#xff0c;确保系统是安全无毒&#xff0c;还具备出色的稳定性与安全性&#xff0c;非常适合企业用户办…

自动猫砂盆真的有必要入手吗?自用不踩雷的选购干货分享!

平时出门在外忙碌&#xff0c;要如何保持猫咪的猫砂盆卫生就成了一个很重要的问题&#xff0c;要知道猫咪拉屎需求特别频繁&#xff0c;如果猫砂盆里的猫屎堆积过量&#xff0c;猫咪就很有可能嫌弃&#xff0c;然后寻找其他地方排泄&#xff0c;这就导致了家里大大小小都充斥着…

Python精选200Tips:186-190

针对序列&#xff08;时间、文本&#xff09;数据的网络结构 续 P186-- 双向LSTM(Bidirectional Long Short-Term Memory 2005)&#xff08;1&#xff09;模型结构说明&#xff08;2&#xff09;创新性说明&#xff08;3&#xff09;示例代码&#xff1a;IMDB电影评论情感分析 …

python爬虫 - 进阶requests模块

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、SSL证书问题 &#xff08;一&#xff09;跳过 SSL 证书验证 &#xff0…

【C++打怪之路Lv7】-- 模板初阶

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文(平均质量分82)&#…

基于SpringBoot的设备管理系统源码带本地搭建教程

技术框架&#xff1a;SpringBoot mybatis thymeleaf Mysql5.7 Fastjson Druid Shiro 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 系统功能&#xff1a;登陆&#xff0c;注册&#xff0c;系统用户管理&#xff0c;角色&#xff0c;部门管理&#xff0c;…

如何在电脑上创建虚拟网卡

1.右键点击此电脑&#xff0c;选择——管理 2.选择设备管理器——网络适配器&#xff0c;在点击操作选择 添加过时硬件 3.点击 下一页 4.在这里选择网络适配器&#xff0c;点击下一页 5.选择微软的环回适配器 6.打开控制面板 7.点击网络和Internet 8.点击网络和共享中心 9…

多表数据实时同步和批量实时同步怎么高效实现?

对于企业来说&#xff0c;准确、及时的数据是进行数据分析和决策支持的基础。如果各个系统中的数据不能及时同步&#xff0c;就会影响数据分析的结果和决策的准确性。通过数据同步&#xff0c;可以将企业内部各个系统中的数据整合到一个数据仓库或数据分析平台中&#xff0c;为…

Jenkins打包,发布,部署

一、概念 Jenkins是一个开源的持续集成工具&#xff0c;主要用于自动构建和测试软件项目&#xff0c;以及监控外部任务的运行。与版本管理工具&#xff08;如SVN&#xff0c;GIT&#xff09;和构建工具&#xff08;如Maven&#xff0c;Ant&#xff0c;Gradle&#xff09;结合使…

【LeetCode刷题】:双指针篇(移动零、复写零)

文章目录 一、移动零1. 题目解析2. 算法原理3. 代码编写 二、复写零1. 题目解析2. 算法原理3. 代码编写 一、移动零 1. 题目解析 题目&#xff1a;移动零【点击跳转题目】 大致题意就是将数组中所有为0的元素往后移&#xff0c;移到数组的末尾&#xff0c;但是所有的非零元素…

shell脚本写代码

用简单的test语句来判断是否闰年 #! /bin/bash read -p "sd " yearif [ $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0 ]thenecho "是润年"elseecho "不是闰年" fi判断一个数是否为偶数 #! /bin/bash read -p "…

PDF怎么转换成TXT文本?这4个方法简单还免费,pdf转txt就靠它!

PDF怎么转换成TXT文本&#xff1f;PDF文件虽然广泛支持&#xff0c;但在某些设备或软件上可能无法完全正确显示&#xff0c;尤其是当文件包含特殊字体或复杂布局时。此外&#xff0c;PDF文件的阅读体验也可能受到格式干扰&#xff0c;如复杂的背景颜色或字体样式。将PDF转换为T…

ABeam 德硕 | 在华外企ESG议题选择指南(1)—— 全球ESG发展趋势及行业环境

在华外企 ESG议题选择指南 系列文章&#xff08;1&#xff09; 引言 ESG议题*在全球投资领域迅速升温&#xff0c;根据全球可持续投资联盟&#xff08;GSIA&#xff09;[1]发布的《2022可持续投资报告》[2]&#xff0c;全球可持续投资规模高达30.3万亿美元&#xff0c;占总…

深度学习-图像处理篇-7MobileNet

MobileNetV1: 深度可分卷积操作 优势 MobileNetV2: MobileNetV3:

如何优化电源模块自动化测试的硬件设计?-纳米软件

电源模块在电子设备中起着至关重要的作用&#xff0c;其性能的好坏直接影响整个系统的稳定性和可靠性。随着科技的不断发展&#xff0c;对电源模块的性能要求越来越高&#xff0c;因此&#xff0c;电源模块自动化测试变得尤为重要。其中&#xff0c;硬件设计是实现高效、准确自…

OmniCorpus数据集:最大(百亿级别)多模态数据集

2024-06-12 &#xff0c;由上海人工智能实验室、哈尔滨工业大学、南京大学、复旦大学等联合创建OmniCorpus&#xff0c;一个达到百亿级别的图文交错数据集。它不仅规模空前&#xff0c;更以其多元化的数据来源和高质量的数据内容&#xff0c;为多模态大语言模型的研究提供了坚实…