JavaScript基础(1)


从今天开始学习JavaScript啦!

每日一记

前置知识

1.概念
    这种编程语言写出来的程序被称为脚本。它们可以被直接写在网页的 HTML 中,在页面加载的时候自动执行。
    脚本被以纯文本的形式提供和执行。它们不需要特殊的准备或编译即可运行。
2.JavaScript 引擎
   首先,引擎(如果是浏览器,则引擎被嵌入在其中)读取(“解析”)脚本。
   然后,引擎将脚本转化(“编译”)为机器语言。
   然后,机器代码快速地执行。
3.作用
   JavaScript 可以做与网页操作、用户交互和 Web 服务器相关的所有事情。
4.局限性
   (1)网页中的 JavaScript 没有直接访问操作系统的功能。
   (2)不同的标签页/窗口之间通常互不通信(“同源策略”)为了解决“同源策略”问题,两个标签页必须<都>包含一些处理这个问题的特定的 JavaScript 代码,并均允许数据交换。
   (3)可以轻松地通过互联网与当前页面所在的服务器进行通信

正文

1.markup(标签)
   type 特性:<script type=…>                                           #已不需要
   language 特性:<script language=…>                                   #已不需要
2.外部脚本
   将大量的 JavaScript 代码放入一个单独的文件。
   脚本文件可以通过 src 特性(attribute)添加到 HTML 文件中。
   使用独立文件的好处是浏览器会下载它,然后将它保存到浏览器的 缓存 中。
   之后,其他页面想要相同的脚本就会从缓存中获取,而不是下载它。所以文件实际上只会下载一次。
   这可以节省流量,并使得页面(加载)更快。

   <script src="路径"></script>                                        #要附加多个脚本,请使用多个标签
   注意:如果设置了 src 特性,script 标签内容将会被忽略。
3.语句
   在代码中编写任意数量的语句。语句之间可以使用;进行分割。                #可以放在一行或多行
   当存在换行符时,在大多数情况下可以省略分号(自动分号插入)
4.注释
   单行注释以两个正斜杠字符 // 开始。                                    #Ctrl+/快捷键
   /* 多行注释*/
5.现代模式("use strict")
   "use strict" 出现在脚本的最顶部,保证旧的功能能够使用

变量

1.概念
   let message;                                                        #创建(声明或者定义)一个名称为“message”的变量
   message = 'Hello';                                                  #为变量添加一些数据
2.变量命名限制
   首字符必须非数字
   变量名称必须仅包含字母、数字、符号 $ 和 _
   可以将变量定义和赋值合并成一行,也可以在一行中声明多个变量
   对于确定不变的变量尽量使用大写
3.常数变量
   声明一个常数(不变)变量,可以使用const而非let

数据类型

1.Number 类型
   包括整数,浮点数和特殊数值(Infinity、-Infinity 和 NaN)
   NaN代表计算错误。它是不正确或者未定义的数学操作所得到的结果,任何对NaN的进一步数学运算都会返回NaN,除了NaN**0=1
2.BigInt 类型
   BigInt用于表示任意长度的整数。可以通过将n附加到整数字段的末尾来创建BigInt值。
3.String 类型
   字符串必须被括在引号里(单双引号无区别,反引号是功能扩展,允许我们通过将变量和表达式包装在${…}中)
   在反引号内${…}的表达式会被计算
4.Boolean 类型(逻辑类型)
   仅包含两个值true和false
   布尔值也可作为比较的结果
5.null 值
   null值不属于上述任何一种类型,它构成了一个独立的类型,只包含 null 值
   null仅仅是一个代表“无”、“空”或“值未知”的特殊值
6.undefined 值
   特殊值undefined和null一样自成类型,undefined的含义是未被赋值
   如果一个变量已被声明,但未被赋值,那么它的值就是 undefined
   通常使用null将一个“空”或者“未知”的值写入变量,而undefined则保留作为未进行初始化的事物的默认初始值
7.Object 类型
   object 用于储存数据集合和更复杂的实体
8.Symbol 类型
   symbol 类型用于创建对象的唯一标识符
9..typeof 运算符
   typeof 运算符以字符串的形式返回数据类型

注:typeof null的结果为"object"。这是官方承认的typeof的错误
   typeof alert的结果是"function",因为alert在JavaScript语言中是一个函数,
   函数隶属于object类型。但是typeof会对函数区分对待,并返回"function"
   typeof(x)与typeof x相同

交互

alert
   alert("Hello");
   显示模态窗(modal) ,直到他们处理完窗口
prompt
   result = prompt(title, [default]);
   显示一个带有文本消息的模态窗口,还有input框和确定/取消按钮
   title是显示给用户的文本,default是指定input框的初始值。 (中括号可去)
   不提供default的话,浏览器会把undefined插入到prompt
   prompt将返回用户在input框内输入的文本,如果用户取消了输入,则返回null
   显示一个带有文本消息的模态窗口,还有input框和确定/取消按钮
confirm
   result = confirm(question);
   显示一个带有question以及确定和取消两个按钮的模态窗口。
   点击确定返回true,点击取消返回false。

限制性:
    模态窗口的确切位置由浏览器决定。通常在页面中心。
    窗口的确切外观也取决于浏览器。我们不能修改它。

类型转换

字符串转换  x = String(x);
数字型转换  Number(x)x
                   字符串变成NaN(存在字符)或0(除换行符\n制表符\t外为空)
                   undefined变成NaN
                   null变成0
                   true 和 false变成1 and 0
布尔型转换  Boolean(x)
                   直观上为“空”的值(如 0、空字符串、null、undefined 和 NaN)将变为 false。
                   其他值变成 true。
                   非空的字符串总是 true(PHP等语言视 “0” 为 false而js不是)

自动转换:
    运算符和函数会自动将赋予它们的值转换为正确的类型
    alert会自动将任何值都转换为字符串以进行显示;算术函数和表达式中会自动进行number类型转换

基础运算符,数学运算

详见知识点

1.加号 + 用于求和
   应用于字符串,连接各个字符串
   只要任意一个运算元是字符串,那么另一个运算元也将被转化为字符串

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

3.运算符优先级
   一元运算符优先级高于二元运算符

4.其他运算方式
   链式赋值 a = b = c = 2;
   原地修改 n += 5;
   自增/自减counter++;相当于counter = counter + 1;
   自增/自减只能应用于变量,应用于数值(比如 5++)会报错
   运算符 ++ 和 – 可以置于变量前,也可以置于变量后。
   ++和–放在前面使用的是自增后的值,放在后面是自增前的值
   位运算符及位操作符:按位与 ( & )按位或 ( | )按位异或 ( ^ )按位非 ( ~ )左移 ( << )右移 ( >> )无符号右移 ( >>> )
   逗号运算符丢弃逗号前的结果,保留逗号后的

值的比较

一,比较结果为 Boolean 类型
       所有比较运算符均返回布尔值
二,字符串比较
       按字符(母)逐个进行比较的
三,不同类型间的比较
       先将其转化为数字再判定大小(true 会被转化为 1、false 转化为 0)
四,严格相等
       严格相等运算符 === 在进行比较时不会做任何的类型转换(属于不同的数据类型就立刻返回 false)
五,比较 null 和 undefined
       严格相等 === 比较二者时false
       非严格相等 == 比较二者时true
       数学式或其他比较方法 < > <= >= 时null 被转化为 0,undefined 被转化为 NaN
六,其它
       null 会被转化为0
       undefined 在比较中被转换为了 NaN,而 NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false
       undefined 只与 null 相等

总结问题

比较运算符始终返回布尔值。
字符串的比较,会按照“词典”顺序逐字符地比较大小。
当对不同类型的值进行比较时,它们会先被转化为数字(不包括严格相等检查)再进行比较。
在非严格相等 == 下,null 和 undefined 相等且各自不等于任何其他的值。
在使用 > 或 < 进行比较时,需要注意变量可能为 null/undefined 的情况。
比较好的方法是单独检查变量是否等于 null/undefined。
对于取值可能是 null/undefined 的变量,请按需要分别检查它的取值情况。
除了严格相等 === 外,其他但凡是有 undefined/null 参与的比较,我们都需要格外小心。
除非你非常清楚自己在做什么,否则永远不要使用 >= > < <= 去比较一个可能为 null/undefined 的变量。

每日一句

一愿识尽天下好人,二愿读尽世间好书,三愿看尽人间好山水。


评论
  目录