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

好的书写习惯

  • 最好不要省略分号,尤其对新手来说
  • 确保 “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。

暂停脚本运行的三剑客

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. 窗口的确切外观也取决于浏览器。我们不能修改它。
    这些方法都是模态的:它们暂停脚本的执行,并且不允许用户与该页面的其余部分进行交互,直到窗口被解除。
posted @ 2024-10-31 00:25  GJ504b  阅读(17)  评论(0编辑  收藏  举报