标签:没有 定义变量 一起 初始化 执行 基本数据类型 操作 nod 复杂数据类型
var arr = [];
for(var i = 0; i < 3; i++) {
arr.push(function() {console.log(i)});
}
arr[0]();
arr[1]();
arr[2]();
parseInt("678tianlangstudio");
+"678tianlangstudio";
1 + "678tianlangstudio";
写好答案了吗?要公布答案了哦
01
2
NaN
678tianlangstudio
1NaN
如果你的答案跟上面的任意一个匹配上了,那恭喜你! 可以一起往下面看了,因为这是一份全错的答案。
想起上高中时有次英语老师拿了张考卷对着答案讲了半天,然后对我们说:
这是B卷看成A卷的答案了,我们从头讲。
从此我就再不相信什么答案了,甚至遇到做不出的题我都怀疑是不是题出错了!慢慢的养成了独立思考的习惯,不知是好是坏。感谢老师苦心一片,至今教诲良言时犹在耳:
JavaScript是动态类型语言,也就是说在代码编写时不需要声明指定其类型,变量类型在代码运行时才确定.
没有方法、不可变
包括:
可以使用typeof
判断数据类型:
typeof "Bill" // 返回 "string"
typeof 3.14 // 返回 "number"
typeof true // 返回 "boolean"
typeof false // 返回 "boolean"
typeof x // 返回 "undefined" (假如 x 没有值)
typeof {name:‘Bill‘, age:62} // 返回 "object"
typeof [1,2,3,4] // 返回 "object"
typeof null // 返回 "object"
typeof function myFunc(){} // 返回 "function"
需要注意:
typeof null
返回object
历史原因兼容原来的版本
typeof arr
返回 object
数组也是对象
typeof function testFun() {}
返回 function
数据从一个类型转换到另一个类型
强制就是你得自己编写代码转换数据类型,隐式的就是有执行引擎帮你转换.
const x = 17;
const explicit = String(x); //使用强制类型转换把数字x转换为字符串explicit
const implicit = x + ""; //引擎看到你要把个数字跟字符串相加,就帮你把数字转为字符串了.测试题最后一行类似.
==
会把两边的数据转换为同一种类型再比较是否相等,也就是忽略数据类型,比如:
1 == ‘1‘;//true
===
先判断数据类型,数据类型不一样就直接false, 不为其类焉问其值, 比如:
1 === `1`; //false
注意:
‘false‘
-> true
此处省略10000字
太多,因为除了上面的都是^-^
非基本数据类型都有关联属性和方法,比如:
Array.prototype.push()
String.prototype.toUpperCase()
? 注意:
? String
是复杂类型,‘tianlang‘
这个是基本数据类型,有些时候它们行为一样,这是因为有自动转化,专业俗语自动装箱
. 例如:
1778.toString();//会报错,因为基本类型没有方法。这么粗暴直接冒失的调用执行引擎也不好意思先装个箱
const x = 1788;
x.toString(); //"1788" 斯文多了,自动装箱成对应的复杂类型走起。
x.__proto__;//Number...
基本数据类型对应的装箱复杂类型:
String()
Number()
Boolean()
Object()
(Symbol())
Java里也有这个概念,但JavaScript除了名字跟Java没半点关系.
作用域就是变量生效的范围
使用
var
定义的变量有效范围是从定义开始到所在函数结束.使用
const
,let
定义的变量有效范围是从定义开始到所在块结束.
? 这个需要先说下程序执行过程:
声明使用var定义的变量(注意:只有声明没有初始化赋值)
.......
这就是为什么,我们可以先调用一个函数后对这个函数进行定义,可以先使用一个使用var定义的变量,后面才使用var定义变量而不会报错。因为再执行时把函数定义的代码和var定义提升了.注意看3,4.
可以把全局对象想象成一颗大树,在程序中定义的变量也好函数也好其实都挂在一个全局对象上。
在浏览器运行环境中,全局对象是
window
在Node.js运行环境中,全局对象是
global
未完待续...感谢观看,欢迎关注
标签:没有 定义变量 一起 初始化 执行 基本数据类型 操作 nod 复杂数据类型
原文地址:https://blog.51cto.com/14256460/2511366