js基础必看系列--2024-10-30总结

news/2025/1/17 9:02:52/文章来源:https://www.cnblogs.com/GJ504b/p/18516864

好的书写习惯

  • 最好不要省略分号,尤其对新手来说
  • 确保 “use strict” 出现在最顶部

"use strict";
代码以现代模式工作【ES5 规范增加了新的语言特性并且修改了一些已经存在的特性。为了保证旧的功能能够使用,大部分的修改是默认不生效的。你需要一个特殊的指令 —— "use strict" 来明确地激活这些特性。】

  • " "与 ''区别不大

声明变量

let user = 'John';
let age = 25;
let message = 'Hello';let hello = 'Hello world!';
let message;  
message = hello;  // 将字符串 'Hello world' 从变量 hello 复制到 message 
alert(hello);  // Hello world!
alert(message);  // Hello world!//一个变量应该只被声明一次。
//对同一个变量进行重复声明会触发 error:

const 与 let

  • const 将常量用作别名,以便记住那些在执行之前就已知的难以记住的值。
    const white = #fff   //(十六进制)格式为颜色声明常量: 

没有那么糟糕的var

  • var 声明的变量会在函数开头被定义,与它在代码中定义的位置无关(这里不考虑定义在嵌套函数中的情况)。人们将这种行为称为“提升”,因为所有的 var 都被“提升”到了函数的顶部。
if (true) {var test = true; // 使用 "var" 而不是 "let"
}
alert(test); // true,变量在 if 结束后仍存在

- 【不好找的逻辑错误】

var user = "Pete";
var user = "John"; // 这个 "var" 无效(因为变量已经声明过了)
//不会触发错误,只显示一次
alert(user); // output John
  • 声明会被提升,但是赋值不会。
    所有的 var 声明都是在函数开头处理的,我们可以在任何地方引用它们。但是在它们被赋值之前都是 undefined
 function sayHi() {alert(phrase);var phrase = "Hello";
}
sayHi();//undefined

NAN

NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果 任何对 NaN 的进一步数学运算都会返回 NaN:如果在数学表达式中有一个 NaN,会被传播到最终结果
只有一个例外:NaN ** 0 结果为 1

** 是个幂运算

在 js 和 Python中,使用 ** 表示幂运算。

alert( 2 ** 2 ); // 2² = 4
alert( 2 ** 3 ); // 2³ = 8
alert( 2 ** 4 ); // 2⁴ = 16
alert( 4 ** (1/2) ); // 2 (1/2 次方)
alert( 8 ** (1/3) ); // 2 (1/3 次方)

在C语言和C++中,幂运算通常使用 pow 函数,例如 pow(a, b)。
在数学表达式中,幂运算通常使用上标表示,例如 a^b 表示 a 的 b 次幂。

运算符

一元运算符优先级高于二元运算符
img

  • 一元运算符

加号 + 应用于单个值,对数字没有任何作用。
但是如果运算元不是数字,加号 + 则会将其转化为数字。它的效果和 Number(...) 相同,但是更加简短。

  • 二元运算符

alert('1' + 2 + 2); // "122",不是 "14"
'12' + 2 === '122'
alert(2 + 2 + '1' ); // "41",不是 "221"
通常,加号 + 用于求和
但是如果加号 + 被应用于 字符串 ,它将合并(连接)各个字符串:

二元 + 是唯一一个以这种方式支持字符串的运算符。其他算术运算符只对数字起作用,并且总是将其运算元(字符)转换为数字。

alert( 6 - '2' ); // 4, 将 '2' 转换为数字
alert( '6' / '2' ); // 3,将两个运算元都转换为数字
  • 三元运算符;JavaScript 中唯一一个有这么多操作数的运算符

if (age > 18) {
accessAllowed = true;
} else {
accessAllowed = false;
}

等价于

let accessAllowed = (age > 18) ? true : false;

alert( alert(1) && alert(2) );  //显示1,返回undefined,&& 使得结束运算
> alert( alert(1) || 2 || alert(3) );//显示1 然后2.
  • 逗号运算符【有意思,少用】
    逗号运算符能让我们处理多个表达式,使用 , 将它们分开。每个表达式都运行了,但是只有最后一个的结果会被返回

与运算 && 的优先级比 || 高

字符串比较,字典顺序,后面的更大,

从和第一个数字开始比较

"apple" > "pineapple" → false
"2" > "12" → true

普通的相等性检查 ==

存在一个问题,它不能区分出 0 和 false:
严格相等 ===
严格不相等!==

null 与 undefined

  1. JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值
  2. undefined 的含义是 未被赋值。,如果一个变量已被声明,但未被赋值,那么它的值就是 undefined
  • 判断相等时不会进行任何的类型转换:null 被转化为 0,undefined 被转化为 NaN
    undefined 和 null 在相等性检查 == 中不会进行任何的类型转换,它们有自己独立的比较规则,所以除了它们之间互等外,不会等于任何其他的值

alert( null == undefined ); // true
alert( null == 0 ); // false

  • for null,当使用数学式或其他比较方法 < > <= >= 时:
    进行值比较时null 会被转化为数字

alert( null > 0 ); // (1) false
alert( null >= 0 ); // (3) true

  • for undefined,undefined 不应该被与其他值进行比较:

alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)

Infinity 代表数学概念中的 无穷大 ∞。

number 与BigInt

  • number所有大于 (2^53-1) 的奇数都不能用 “number” 类型存储。
  • BigInt类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。

可以通过将 n 附加到整数字段的末尾来创建 BigInt 值。

const bigInt = 1234567890123456789012345678901234567890n;
// 尾部的 "n" 表示这是一个 BigInt 类型

` 反引号

反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字符串中。

let name = "John";
// 嵌入一个变量
alert( Hello, ${name}! ); // Hello, John!
// 嵌入一个表达式
alert( the result is ${1 + 2} ); // the result is 3

typeof

typeof 运算符返回参数的类型。当我们想要分别处理不同类型值的时候,或者想快速进行数据类型检验时,非常有用。

typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"

七种原始数据类型(基本数据类型):
number 用于任何类型的数字:整数或浮点数,在 ±(253-1) 范围内的整数。
bigint 用于任意长度的整数。
string 用于字符串:一个字符串可以包含** 0 个或多个字符,所以没有单独的单字符类型。
boolean 用于 true 和 false。
null 用于未知的值 —— 只有一个 null 值的独立类型。
undefined 用于未定义的值 —— 只有一个 undefined 值的独立类型。
symbol 用于
唯一**的标识符。
object 用于更复杂的数据结构。
我们可以通过 typeof 运算符查看存储在变量中的数据类型。

通常用作 typeof x

typeof null 会返回 "object" —— 这是 JavaScript 编程语言的一个错误,实际上它并不是一个 object。

交互

  1. prompt

let age = prompt('How old are you?', 100);
title
显示给用户的文本
default
可选的第二个参数,指定 input 框的初始值。
alert(You are ${age} years old!); // You are 100 years old!

访问者可以在提示输入栏中输入一些内容,然后按“确定”键。然后我们在 result 中获取该文本。或者他们可以按取消键或按 Esc 键取消输入,然后我们得到 null 作为 result。

暂停脚本运行的三剑客

alert
显示信息。

alert("Hello");

prompt
显示信息要求用户输入文本点击确定返回文本,点击**取消或按下 Esc 键返回

let test = prompt("Test", ''); // <-- 用于 IE 浏览器//点击取消,之后不会有内容显示了

null
confirm
显示信息等待用户点击确定或取消。点击
确定返回 true,点击取消或按下 Esc 键返回 false。**

let isBoss = confirm("Are you the boss?");
alert( isBoss ); // 如果“确定”按钮被按下,则显示 true

p.s.局限

  1. 模态窗口的确切位置由浏览器决定。通常在页面中心。
  2. 窗口的确切外观也取决于浏览器。我们不能修改它。
    这些方法都是模态的:它们暂停脚本的执行,并且不允许用户与该页面的其余部分进行交互,直到窗口被解除。

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

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

相关文章

数据结构 - 散列表,三探之代码实现

本文介绍散列表代码实现,使用取模方式构建散列函数,实现链式法和开放寻址法(线性探测)解决碰撞,包含初始化、插入、删除、查找等功能,并实现了再散列方法,代码已上传至代码库。书接上回,我们继续来聊散列表的代码实现。相信通过前面两章对散列表的学习,大家应该已经掌…

yolo --- 名词解释

MAP 综合衡量检测结果(所有置信度阈值对应的精度、召回率的平均,即下图红线面积,面积越大,效果越好;理想效果是任何召回率下精度都是1) 置信度:判断为目标的概率(0~1)精度和召回率 TP:正确的判断出目标(目标判断为目标) FP:错误的判断为目标(非目标判断为目标) …

GPT释放的意图识别想象力

一、ChatGPT与GPTChatGPT是一个聊天应用。一个输入框,输入你想问他的任何问题,他会给你一个答案,并且这个答案看起来是经过思考、讲究语法并且正确的。他理解你的语言,并能用你的语言给你答案。 而这背后,就是GPT这个大模型在发挥作用(Generative Pre-trained Transforme…

ONM-OncoImmunology

OncoImmunology涉及对癌症的自然或治疗诱导的识别,以及肿瘤发生、炎症和免疫监测之间复杂的相互作用。@目录一、征稿简介二、重要信息三、服务简述四、投稿须知 一、征稿简介二、重要信息期刊官网:https://ais.cn/u/3eEJNv三、服务简述 肿瘤及肿瘤免疫相关的研究 OncoImmunol…

一维差分模板

一维差分模板 题目描述: 输入一个长度为 n的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式: 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序列。 接下来 m …

计量经济学(十五)的理论基础——时间序列分解定理

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 时间序列分析是数据科学中的一个重要分支,旨在探索和理解随着时间变化的数据背后的模式和结构。无论是在金融市场预测、经济政策分析、环境监测还是医学研究…

程序员必备单品:超级常用的linux指令+实际操作案例

Linux常用命令 在Linux系统中,有许多常用的命令可以帮助用户进行文件管理、系统监控、网络配置等操作。以下是一些常见的Linux命令及其具体使用案例: ls:列出目录内容基本用法:ls [选项] [目录]常见参数:-a:显示所有文件,包括以.开头的隐藏文件。 -l:使用长列表格式显示…

数据采集第三次作业

代码链接:第三次数据采集实践作业码云链接 1 作业1 1.1 作业要求指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。使用scrapy框架分别实现单线程和多线程的方式爬取。务必控制总页数(学号尾数2位)、总下载的图片数量(尾数后…

学习笔记(十五):ArkUi-切换按钮 (Toggle)

概述: 提供状态按钮样式、勾选框样式和开关样式,一般用于两种状态之间的切换 一、创建单选框 接口形式如下: type为类型,支持三种 1、Switch 不包含子组件Toggle({type:ToggleType.Switch,isOn:true}) 2、Checkbox 不包含子组件Toggle({type:ToggleType.Checkbox,isOn:tru…

二维前缀和模板

二维前缀和模板 题目描述: 输入一个 n 行 m 列的整数矩阵,再输入 q个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式: 第一行包含三个整数 n,m,q 接下来 n 行,每行包含 m 个整数,表示…

图文并茂教你如何发布自己的NPM包(GitHub Packages npm 包发布)

前情提要 发布包到npm也好,到github packages仓库也好,都是一样的道理,只是仓库地址不一样而已,本文是将npm包发布到了GitHub Packages~ GitHub Packages 简介 GitHub Packages 是一种软件包托管服务,和npm类似,允许您私下或公开托管软件包,并将包用作项目中的依赖项。 …