JS精粹知识点和我的解释
函数若是不return则默认返回undefined
const value=()=>{
let a=3;
}
let value_test;
console.log(value(),value_test); // undefined undefined
console.log(typeof value,typeof value_test); //
argument并不是一个真正的数组,它拥有一个length属性,但是它没有数组其他的方法。
- JavaScript只有一个数字类型。它在内部被表示为64位的浮点数。所以,它的1.0和1值是相同的。
我测试了一下,===> 类型是相同的。
console.log(1==1.0); // true
console.log(1===1.0); //true
- JS没有字符类型,它不像C++,'a'表示字符,在JS中表示一个字符是创建一个字符串。
字符串是不可变的。什么叫不可变呢。(有没有一种浓浓的“人可以被毁灭,但不能被打败”的海鸣威既视感)
str+='a';
//上面这句话经过了哪些骚操作呢? 1.拷贝str,记为temp ==> 2. temp末尾加上1 ===> 3.将str指向temp并且 **毁灭原来的str**
字符串是可以被毁灭的,但是不会被改变。恩,就是这样。
JS的字符是十六位的.这是历史遗留问题。JS被创造的时候,Unicode是一个16位的字符集,So~(16bits = 2bytes ==> 每个字符需要两个字节,C++中char1个字节,int两个字节,某种程度某种情况上来说JS比较浪费资源?)
- 下面列出的值被当做假的(false)
- false
- null
- 0 数字0
- ' ' 空字符串
- NaN 数字NaN
- undefined
其他的所有值都表示为真,包括true,包括"false"字符串
我在react中遇到的JS基础:空数组被作为判断源的时候,是true!!! [] 是true, [] 是true, [] 是true, [] 是true, [] 是true, [] 是true, [] 是true
for in通常用来遍历带有key值的对象。不推荐用来遍历数组,因为for in会将扩展的对象也遍历进来。
var my_obj = {
a: 1,
b: 2
}
Object.prototype.c = 30;
for (item in my_obj) {
console.log(item);
} //最后输出a,b,c
根本原因在于有的时候我们只想要输出a,b。在原型上定义方法这种操作我们完全不知道谁会去做,这让程序非常不可控制,所以就有了 hasOwnProperty这个判断方法。
而for in是很强大的,它将它的手伸向了obj本身就有的属性,还伸向了原型上扩展的属性。
for (item in my_obj) {
if (my_obj.hasOwnProperty(item)) {
console.log(item);
}
} //最后输出a,b
关于parseInt 和 Number的差别
var a=Number(""); // 0
var b=parseInt(""); // NaN
console.log(Number(""),Number(null),Number(String); // 0 0 NaN
console.log(parseInt(""),parseInt(null),parseInt(String); // NaN NaN NaN
上面的例子是我在 2017-8-28 (今日)发现的,因为通过 style[attr]获取属性的时候类型都为String,哪怕是没有设置样式也是string,在这个时候 Number和parseInt非常有默契地保持了一致。
还有一件有趣的事情
var a=new String('0');
console.log(a);
var b=new String(0);
console.log(b);
返回值都是一模一样的,都是String {0: "0", length: 1, [[PrimitiveValue]]: "0"}
那么,我们平时返回空样式的时候是怎么样的呢?
let box2=document.getElementsByClassName("box2")[0];
let test=new String();
let box_test=box2.style.width;
console.log(test==box_test); // true
console.log(test===box_test); //false
console.log(typeof test,typeof box_test); // object string
// 前面相等是因为先做了一次类型转换,将string转换成了object
意思是说,空字符串不等于 null,判断空字符串还是用 字符串长度 length 来判断吧。
true和fales是区分大小写的,不存在True和False作为boolean变量。
JS精粹知识点和我的解释的更多相关文章
- JS重要知识点
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- JS重要知识点(转载 学习中。。。)
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- JS 进阶知识点及常考面试题
将会学习到一些原理相关的知识,不会解释涉及到的知识点的作用及用法,如果大家对于这些内容还不怎么熟悉,推荐先去学习相关的知识点内容再来学习原理知识. 手写 call.apply 及 bind 函数 涉及 ...
- js基础系列框架:JS重要知识点(转载)
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- HTML+CSS+js常见知识点
一.HTML.CSS常见知识点 1.垂直居中盒子 /* 方法一 */ html, body { width: 100%; height: 100%; padding: 0; margin: 0; } ...
- js基础知识点收集
js基础知识点收集 js常用基本类型 function show(x) { console.log(typeof(x)); // undefined console.log(typeof(10)); ...
- 11、网页制作Dreamweaver(补充:JS零碎知识点&&正则表达式)
JS知识点 回车符/r和换行符/n的区别:/r 相当于enter,是段落与段落之间的区别, /n 相当于shift+enter,是行与行之间距离,比较小 几种window操作方法: 1.获取当前窗口大 ...
- JS小知识点----基本包装类型和引用类型
var s1 = "some text"; s1.color = "red"; alert(s1.color); //弹出 underfined var s1 ...
- JS精粹(二)
这章主要讲语法,DC使用了表示形式语法的巴克斯范式图,这的确比语言来得准确简洁.我只想表达一个问题:表达式与表达式语句的关系.因为其他问题很明白. 从DC的巴科斯范式图上大致可以认为,表达式是比表达式 ...
随机推荐
- Java基础 之 System.getProperty()方法
Java基础 之 System.getProperty()方法大全 public static void main(String[] args) { System.out.println(" ...
- HLSL学习笔记(一):基础
http://www.cnblogs.com/rainstorm/archive/2013/05/04/3057444.html 前言 五一在家无事,于是学习了一下HLSL,基于XAN4.0的.学习完 ...
- form+iframe实现ajax文件上传
在做文件上传时除了传入文件外,还有附件参数,并且要求不刷新页面,之前是表单提交的方式,现在修改成ajax上传的方式,由于没有选择用插件,所以用form+iframe的方式,并且这种方式对IE8以上及主 ...
- java blob 文件上传下载
1.文件上传 pojo中为byte[] 类型,数据库中对应为blob类型. 主要代码: FileInputStream fis = null; fis = new FileInputStream(ne ...
- 上海-北京间通过Azure Storage的RA-GRS类型的存储账户进行快速复制
Azure的Blob存储分成多种类型,目前主要有: 其中RA-GRS可以在上海-北京两个数据中心间同步数据.并且,在第二个数据中心可以只读的方式读取这个存储账户中的Blob内容. 虽然GRS采用的是准 ...
- MongoDB之二基础入门(window/linux安装启动)
mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”. 一window安装与启动 一. 下载 上MongoDB官网 ,下载页面:https://w ...
- OpenStack安装后检查流程总结
安装后检查 1. 确保服务正常运行 首先查看服务的运行状态: #service xxx status 为防止对子服务有疏漏,可使用ps + grep 查看: # ps aux |grep xx 2. ...
- delphi 线程教学第一节:初识多线程
第一节:初识多线程 1.为什么要学习多线程编程? 多线程(多个线程同时运行)编程,亦可称之为异步编程. 有了多线程,主界面才不会因为耗时代码而造成“假死“状态. 有了多线程,才能使多个任务同时 ...
- Tiny4412 LED 硬件服务
1.Android系统中启动框架 2.首先实现驱动程序 #include <linux/kernel.h> #include <linux/module.h> #include ...
- HTML基础:
HTML是英文HyperText Markup Language的缩写,即超级文本标记语言,是用于描述网页文档的一种标记语言.HTMl是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言.HTM ...