栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JavaScript入门笔记02 基本知识Ⅲ】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JavaScript入门笔记02 基本知识Ⅲ】

笔记参考javascript.info中文站

  • 浏览器环境下的交互
        • 1. alert
        • 2. prompt
        • 3. confirm
  • 类型转换
        • 1. 字符串转换
        • 2. 数字型转换
        • 3. 布尔型转换
  • 基础运算符
        • 1. 术语
        • 2. 数学运算
        • 3. + 运算符
        • 4. 优先级
        • 5. 赋值运算符
        • 6. 原地修改
        • 7. 自增/自减
        • 8. 位运算符和逗号运算符
  • 值的比较
        • 1. 比较的结果
        • 2. 字符串比较
        • 3. 不同类型的比较
        • 4. 严格相等
        • 5. null 和 undefined 的比较

浏览器环境下的交互 1. alert

前面的笔记中已经出现过这个函数,它会显示一条信息,并等待用户按下 “确认”,弹出的这个带有信息的小窗口被称为 ”模态窗“ ,在用户处理完这个 “modal” 前,他们无法与其他部分交互,举个例子:

alert("Hello"); // 不回应别人打招呼是很不礼貌的行为
2. prompt

prompt 函数接收两个参数:prompt(title, [default]),其中带中括号的default参数可选, prompt 函数可以显示一个 input 框,让用户输入数据,随后将输入的内容赋值给对应变量。

title 是显示给用户看的文本
default 是指定 input 框的初始值。

举个例子:

 let age = prompt('How old are you?', 100);
alert(`You are ${age} years old!`); // You are 100 years old!

当用户取消输入,或者按ESC取消输入时,返回 null 值

当我们没有设置第二个参数 default 时,现代浏览器会默认赋值 undefined ,但是在使用IE时请注意,IE没有这个功能

3. confirm

正如其名:确认
confirm 函数有一个参数(字符串形式),调用函数时会在模态窗中显示该参数的内容,用户点击 “确认” 对应变量则赋值 true ,选择 “取消” 则赋值 false 。

举个例子:

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

confirm 函数的参数一般是一个 Question,让用户去 confirm



类型转换

大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型,例如 alert 函数会将参数转化成字符串类型。

但有些情况下我们需要手动显式转换类型:

1. 字符串转换
let value = true;// 声明一个布尔变量,赋值为真
alert(typeof value); // boolean

value = String(value); // 现在,值是一个字符串形式的 "true"
alert(typeof value); // string
2. 数字型转换
let str0 = "123";// 声明一个字符串,赋值为“123”
let str1 = "balabala"// 声明一个字符串,赋值为"balabala"
alert(typeof str0); // string
alert(typeof str1); // string

let num0 = Number(str0); // 变成 number 类型 值为123
alert(typeof num0); // number
alert(num0);// 123

let num1 = Number(str1);// 变成 number 类型 值为NaN
alert(typeof num1); // number
alert(age); // NaN,字符串无法变成确切的数字

Number类型转换的值存在下述规则:

值转换为
undfinedNaN
null0
true1
false0
string纯数字则转成对应数字(去空格),非纯数字则NaN,空字符串则 0
3. 布尔型转换
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false

alert( Boolean("hello") ); // true
alert( Boolean("") ); // false

空则0,非空则1
null、undefined、空字符等 即空
数字、非空字符串等 即非空

只含有一个空格的字符串也非空



基础运算符 1. 术语
  • 运算元:运算符应用的对象
  • 一元运算符:只拥有一个运算元的运算符
  • 二元运算符:拥有两个运算元的运算符
2. 数学运算
  • 加法 +
  • 减法 -
  • 乘法 *
  • 除法 /
  • 取余 %
  • 求幂 **
3. + 运算符

+运算符有三种意义

  1. 数学加法,二元运算符
  2. 字符串连接,二元运算符
let s = "my" + "string";
alert(s); // mystring

两个运算符中有一个是字符串则另一个运算符自动转成字符串

alert( '1' + 2 ); // "12"

注意:运算符是按顺序工作

// 先加法,再连接
alert(2 + 2 + '1' ); // "41",不是 "221"

// 先连接,再连接(第一次连接后又成了新字符串“12”)
alert('1' + 2 + 2); // "122",不是 "14"
  1. 数字转化,一元运算符
    加号 + 应用于单个值,对数字没有任何作用。但是如果运算元不是数字,加号 + 则会将其转化为数字,举个例子:
// 对数字无效
let x = 1;
alert( +x ); // 1

// 转化非数字
alert( +true ); // 1
alert( +"" );   // 0

let apples = "2";
let oranges = "3";
// 在二元运算符加号起作用之前,所有的值都被转化为了数字
alert( +apples + +oranges ); // 5

// 与Number(),显式类型转换函数效果相同,但更简洁
alert( Number(apples) + Number(oranges) ); // 5
4. 优先级

我们只需要知道基础优先级和 “一元运算优先级高于二元运算” 即可,其余优先级可参考优先级表或自行百度。

5. 赋值运算符

赋值符号 = 也是一个运算符,从优先级表中可以看到它的优先级非常低,几乎所有运算都完成后才会赋值。

在 JavaScript 中,所有运算符都会返回一个值,= 也是一样,语句 x = value 将值 value 写入 x 然后返回 value,因此只要出现了 = ,一定有对应的被赋值的变量:

let a = 1;
let b = 2;

let c = 3 - (a = b + 1);

alert( a ); // 3,3也被返回了,尽管a只是一个中间值
alert( c ); // 0

我们也可以进行链式赋值,同时给多个变量赋同一个值

let a, b, c;
a = b = c = 2 + 2;// 注意,这些运算符都是按顺序和优先级运算的,优先级高的先运算,靠右的先运算

alert( a ); // 4
alert( b ); // 4
alert( c ); // 4
6. 原地修改

我们经常需要对一个变量做运算,并将新的结果存储在同一个变量中,如 n = n + 5
因此Javascript设计了缩写,可以使用运算符 += 和 *= 来缩写这种表示

let n = 2;
n += 5; // 现在 n = 7(等同于 n = n + 5)
n *= 2; // 现在 n = 14(等同于 n = n * 2)
n *= 3 + 2; // 现在n = 70(右边部分先被计算,等同于 n *= 8)
alert(n); // 70
7. 自增/自减

分别对应 ++ 运算符和 - - 运算符

let counter = 2;
counter++;      // 和 counter = counter + 1 效果一样,但是更简洁
alert( counter ); // 3

counter--;      // 和 counter = counter - 1 效果一样,但是更简洁
alert( counter ); // 2

自增/自减只能应用于变量,比如 5++ 则会报错。

注意,还可以这样写:++counter,--counter,分别被称为 “前置形式” 和 “后置形式”
它们的区别是,前置形式返回一个新的值,但后置返回原来的值,举个例子

let counter = 1;
let a = ++counter; // 返回 ++ 后的结果

alert(a); // 2
let counter = 1;
let a = counter++; // 返回 ++ 前的结果

alert(a); // 1
8. 位运算符和逗号运算符
  • 位运算符
    位运算符把运算元当做 32 位整数,并在它们的二进制表现形式上操作,如按位与 ( & )、按位或 ( | )等,不常用。

  • 逗号运算符
    逗号运算符能让我们处理多个语句,使用 “,” 将它们分开,举个例子

// 一行上有三个运算符
for (a = 1, b = 3, c = a * b; a < 10; a++) {
 ...
}

写起来方便,读起来难,也不常用



值的比较 1. 比较的结果

比较大小的运算符包括 >、<、≥、≤、==、!=
比较的结果只可能是正确 true,或错误 false,也就是布尔类型

let result = 5 > 4; // 把比较的结果赋值给 result
alert( result ); // true
2. 字符串比较

字符串比较采用Unicode 编码顺序,从头开始按字母顺序,一位位比,相等则比下一位,直至结尾都相等则相等,一方没有字符了则判定为 “小”。

注意,同位小写字母比大写字母大,“a” > “A”

alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true
alert( 'Bee' > 'Be' ); // true
3. 不同类型的比较

当对不同类型的值进行比较时,JavaScript 会首先将其转化为数字(number)再判定大小。

alert( '2' > 1 ); // true,字符串 '2' 会被转化为数字 2
alert( '01' == 1 ); // true,字符串 '01' 会被转化为数字 1
alert( true == 1 ); // true
4. 严格相等

有的时候,不同类型比较自动转成Number比较这一点并不方便,比如无法区分空字符串和 false

alert( "" == false ); // true

这时候就需要用到另一种比较概念:严格相等 / 严格不相等,符号是 === / !==
首先判定是否同类型,不同直接返回 false,不转化成Number

这样做可以增加可读性,避免奇怪的错误

5. null 和 undefined 的比较

null 和 undefined 不同类型,因此严格比较不相等

但有趣的是,二者非严格比较相等,我们知道,null 的 Number转化是 0,而 undefined 转化后是 NaN ,二者并不相等,但是 Javascript 对此做出了特殊规定:

// 二者不会进行类型转换,直接判定
alert( null == undefined ); // true

在此规则下,null,undefined,0 三者之间的比较变得格外热闹

alert( null > 0 );  // (1) false,null转化成数字0
alert( null == 0 ); // (2) false,null在==比较下不转化成数字,null 和 undefined有自己独立的比较规则,所以除了它们之间互等外,不会等于任何其他的值
alert( null >= 0 ); // (3) true,null转化成数字0

alert( undefined > 0 ); // false,undefined 转换成 Number 类型 NaN
alert( undefined < 0 ); // false,undefined 转换成 Number 类型 NaN
alert( undefined == 0 ); // false,undefined 在 == 比较下不转化成数字,null 和 undefined有自己独立的比较规则,所以除了它们之间互等外,不会等于任何其他的值

这些规则有些古怪,即使经常和 Javascript 打交道的程序员可能会渐渐习惯熟悉这些规则,但是我们依然建议尽量避免null,undefined,0 三者之间的比较,尤其是大于小于的比较

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号