惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
博客园_首页
T
The Blog of Author Tim Ferriss
H
Hackread – Cybersecurity News, Data Breaches, AI and More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
I
InfoQ
量子位
J
Java Code Geeks
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
Webroot Blog
Webroot Blog
Martin Fowler
Martin Fowler
D
Docker
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
罗磊的独立博客
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
Cyberwarzone
Cyberwarzone
P
Privacy & Cybersecurity Law Blog
Last Week in AI
Last Week in AI
爱范儿
爱范儿
The Hacker News
The Hacker News
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
V
V2EX
Simon Willison's Weblog
Simon Willison's Weblog
AI
AI
Y
Y Combinator Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
GbyAI
GbyAI
V
Visual Studio Blog
H
Heimdal Security Blog
S
Secure Thoughts
B
Blog RSS Feed
雷峰网
雷峰网
T
Tenable Blog
C
Check Point Blog
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
About on SuperTechFans
Recent Commits to openclaw:main
Recent Commits to openclaw:main

HTML

kimi3 模型也是 6 起来了 - V2EX 想 vibe 一个日历 html 组件怎么都搞不好。。。 - V2EX 才知道 html5 有 dialog 标签 - V2EX 是不是搜索引擎跳转来的流量,都拿不到关键词了?用 referer 只获取到 www.bing.com www.google.com 这样的域名,无法获取到后面的关键词信息,有解决办法么? - V2EX 求一些 HTML 嵌入代码资源。 - V2EX 请教有没有办法知道选中的是哪一项? - V2EX H5 中加载生僻字体过慢求助 - V2EX 求问前端如何实现一个业务表格,要求能够固定首列,其余列滚动,点击一行在该行下展开一行且固定住,左右滑动其他列的时候固定的行不动? - V2EX [前端] 若一个 input 被双向数据绑定了,如何通过外部 js 设置该 input 的 value - V2EX element-ui 中 textarea 换行和空格回显最佳方案? - V2EX 为啥 img 和 embed 标签对同一个 svg 展示效果不一样? - V2EX 关于正则表达式的问题,批量修改有相同内容的行 - V2EX html document 的字符编码问题: content-type 与 meta charset 的区别? - V2EX 如何把 bookmarks.html 转换成树状结构/下拉菜单的网页? - V2EX HTML 如何监听回车但忽视一些情况 - V2EX PHP 文件格式问题请教 - V2EX 求教:对于前端渲染来说,第一次打开某个 URL 和点击刷新这个 URL 有什么区别? - V2EX 招兼职, 来一个能帮忙改写 html - V2EX 在 Chrome 中浏览某网页,怎么删除或屏蔽 translate="no",正常使用网页翻译? - V2EX htmx 是复古?还是新潮流? - V2EX 大家对外提供开放平台接口的时候,文档该如何选型 - V2EX 关于 html 后台管理模板 - V2EX 现在 Web 开发大家用 H5 语义化标签还是用的 div+span 呀 - V2EX html5 推 rtmp 流的方案? - V2EX 现在(2021 年末)是否有任何的标准支持在一个 HTML 里 include 另外一个 HTML 文件的内容? - V2EX 虽然马上 2022 了,我还是不知道 section, article, aside 这些怎么用。 - V2EX 请问如何用 Xquery 生成 HTML table - V2EX html 中插入批量 img 图片问题 - V2EX 淘宝, 1688 链接后面的 spm 是跟踪用户操作的,请教一下它是怎么生成的吗?需要在代码中一个个添加,还是可以生成 html 的时候动态插入。请教下实现逻辑 - V2EX html 如何加入 http 基本认证 - V2EX html 前端有哪些显示 html、css、js、sql 等代码内容的 ui 插件吗? - V2EX 请问 html 文件中的 vbscript 语句本地文件可以运行,放到服务器上就不行。 - V2EX 喜欢 producthunt.com 的前端 css 模板,简洁直观。有类似的 html 模板可以使用吗,像 html5up.net 上这样的能开箱即用 - V2EX 给 V2EX 加壳😂 - V2EX H5 不同域名页面跳转如何携带 cookie - V2EX 为什么要解决 iframe 跨域问题? iframe 不是默认可以跨域的吗? - V2EX 将 h5 内嵌到别人的应用如何实现静默授权 - V2EX 如何爬取网站背景图片 - V2EX 可否推荐一个在 remixOS 环境下使用的代码编辑器 - V2EX index.html 放在服务器上,浏览器输入地址链接是下载而不是打开 - V2EX <p>包不住<div>是强制的 w3c 标准?还是约定成俗的规范? - V2EX bootstrap 的弹框弹出来之后,后面的滚动条就没有了。有大佬知道怎么做吗 - V2EX 请问下网易运音乐网页版的滚动条是如何隐藏的? - V2EX 有人研究过 happi123.com 网站吗? - V2EX 关于拖拽和定位的问题 - V2EX Selenium 如何点击无链接的 a 标签 - V2EX 浏览器 html5 video 标签 - V2EX 为什么 html 不使用类似的 <include>...</include> 这样的模板语法? - V2EX
给萌新 HTML5 入门指南(二) - V2EX
GrapeCityChina · 2020-11-05 · via HTML

上一篇我们已经为大家介绍了HTML5 新增的内容和基础页面布局,这篇会继续向大家介绍广义上 HTML5 中另一个组成部分:JavaScript 数据类型。

JavaScript 作为一种弱类型语言,最大的特点就是动态类型。也就是说不用提前声明变量的类型,在程序运行时,类型会被动态的确定,并且在执行过程中可以动态的修改变量的类型。同时不同类型变量在运算时会自动进行隐式的类型转换。以下是一些常见的隐式转换示例:


var foo = 2020; 	// typeof foo -> "number"
var foo = "SpreadJS"	 // typeof foo -> "string"
var foo = true + 1;         // foo = 2 typeof foo -> " number"
var foo = true + false;      // foo = 1 typeof foo -> " number"
var foo = '5' - '2';          // foo = 3 typeof foo -> " number"
var foo = 20 + 20 + "SpreadJS" // foo = "40SpreadJS" typeof foo -> "string"
var foo = "SpreadJS" + 20 + 20 // foo = "40SpreadJS" typeof foo -> " string"

依据最新的 ECMAScript 标准将数据类型定义了 8 种:

其中为原始类型:Boolean 、Null 、Undefined 、Number 、BigInt 、String 、Symbol 和对象类型:object

关于原始类型需要知道的几个知识点:

  • 原始类型的值是按值访问的

即在赋值和修改值时是通过值传递的方式来完成的,对变量赋值或者修改值会在内存中重新分配空间。

例如:

var a, b, x, y;
a = " SpreadJS";
b = " GrapeCity";
x = a;
y = b;
console.log(a, b, x, y);   // result:  SpreadJS GrapeCity SpreadJS GrapeCity

a 和 x,b 和 y 之间赋值是完全独立的拷贝,互不干涉,如果我们将其中任何一个变量的值重新改变,其他相同值的变量也不会受到任何影响。

  • 严格相等===和非严格相等==

对于原始类型,==只进行值比较,如果是不同类型则会在转换后再比较,===则会比较数据类型。

例如:

undefined === null //fasle
undefined == null //true
true === 1 //fasle
true == 1 //true
null == 0 //false
  • Null 和 Undefined

null 和 undefined 在使用中几乎没有区别,在使用非严格相等比较时结果也为 true,它们的区别就是在于进行数值转换时它们的字面意义不同,undefined 代表未定义,转为数值为 NaN,而 null 为空、转为数值时为 0 。

例如:

Number(undefined) //NaN Number(null) //0 1 + undefined //NaN 1 + null //1

虽然两者差别不大,并不会严格按照上面的区分去使用,但在实际项目应用中,对于空值的判断两者则都需要考虑。

  • NaN

NaN 即 Not a Number ,表示了非数字类型,任何和 NaN 的操作返回值都是 NaN,NaN 不等于 NaN 。其中有一个全局方法 isNaN(),它的作用是检查一个值是否能被 Number() 成功转换。 如果能转换成功,就返回 false,否则返回 true 。

例如:

NaN == NaN; 	// fasle
isNaN('123')   // false 能转换
isNaN('abc')    // true 不能转换
  • 浮点数精度误差

在 JavaScript 中,整数和浮点数都属 Number 数据类型,所有数字都是以 64 位浮点数形式存储的,也就是说 JavaScript 底层没有整数,1 和 1.0 是相同的。

下面举几个例子来说明:

   // 加法
   0.1 + 0.2 = 0.30000000000000004
   0.1 + 0.7 = 0.7999999999999999
   0.2 + 0.4 = 0.6000000000000001

   // 减法
   0.3 - 0.2 = 0.09999999999999998
   1.5 - 1.2 = 0.30000000000000004

   // 乘法
   0.8 * 3 = 2.4000000000000004
   19.9 * 100 = 1989.9999999999998

   // 除法
   0.3 / 0.1 = 2.9999999999999996
   0.69 / 10 = 0.06899999999999999

   // 比较
   0.1 + 0.2 === 0.3 // false
   (0.3 - 0.2) === (0.2 - 0.1) // false

类似这样看起来不会算错的问题,在某些系统尤其是涉及财务的系统中会是一个严重的问题,这里就不展开解释发生误差的原因了,大家可自行研究,我们这只对解决方案简单的列一下,1. 可以通过引用类似 Math.js 、decimal.js 、big.js 这样的类库。2.对于对数字精度要求不高的系统,可以格式化并保留 x 位小数来处理。3. 计算时,将小数部分和整数部分分开计算再合并,等。

关于引用类型需要知道的几个知识点:

  • 引用类型的值是按引用访问的

在操作对象时,实际上是在操作对象的引用而不是实际的对象。给变量赋值改变的是对象的引用关系。

例如:

var obj1 = {a:1};
var obj2 = obj1;
obj1.a = 2;
console.log(obj2.a) // result: 2.obj1 和 obj2 为同一对象
obj1 = {a:3};
console.log(obj2.a) // result: 2.obj1 指向新对象,obj2 不变
  • 引用类型===和==意义相同都为引用的比较

即是否为同一对象,各类型之间的非严格相等==比较类型转换可参考下表:

参考

类型检测

JavaScript 中类型检测方法有很多,有例如:typeof 、instanceof 、Object.prototype.toString 、constructor 、duck type 这几种。

虽然方法很多,但判断思路就是两种:1 根据数据类型判断 2 根据构造函数判断。

  • typeof

typeof 可以判断数据类型,依据之前的介绍,javascript 变量类型分为值类型和引用类型,typeof 应用场景只可以区分值类型的数据类型,例如:

typeof 42 // "number"
typeof {} // "object"
typeof undefined // " undefined"
  • instanceof

和 typeof 一样,instanceof 用于判断引用类型的数据类型。

例子:


(function(){}) instanceof Function

其他的还有 Object.prototype.toString 、constructor 、duck type,在这就不一一介绍。

在了解了 JavaScript 的基础数据类型知识后,后面我们会继续为大家借着介绍 CSS 相关的内容。