Js基础知识(一) - 变量

js基础 – 变量

*人人对js肯定不会生疏,入门很简单(一般入门),许多人经由过程网络资源、书本、教室等许多门路进修js,然则有些js基础的只是每每被人人脱漏,本章就从js变量范例来讲一说js

变量范例*

js变量范例分为基础范例(或许叫值范例)和援用范例。值范例包含Number、Boolean、String、undefined、 null、Symbol (ES6 新增)。 援用范例包含Object 、Array、Function、Date、RegExp,值范例存放在栈内存中,援用范例的数据是存放在堆内存中。

值范例的数据在复制的时刻会在栈内存中新建一个新的存储地区用来存储新的变量,和之前的值没有任何关系。比方以下例子:

var a = 'a'
var b = a
b = 'b'
console.log(a) // 'a'

当b的值转变的时刻,a的值不会随着转变。这个很简单,人人也都能邃晓。

下面说一下援用范例,定义一个对象的时刻会在栈内存中存储了一个指针,该指针指向堆内存中该对象的存储地点,当复制这个对象赋值给另一个对象的时刻,只是把该对象的指针地点赋值给了另一个对象变量,他们都指向同一个对象,所以当一个值转变的时刻,另一个值会随着转变,看下面的例子就会邃晓:

var obj1 = {name:'obj1'}
var obj2 = obj1
obj2.name = 'obj2'
console.log(obj1.name) // 'obj2'

人人能够实行一下上面的代码,打印obj1.name的时刻输出’obj2′,这就是因为对象是援用范例的变量。

JavaScript内置函数和对象

js中内置了一些函数和对象,许多言语都邑有内置的要领,直接能够挪用开辟。
依据ECMAscript(javascript语法规范)供应的内置函数包含Object、Array、Boolean、Number、String、Function、Date、Regexp和Error。内置对象包含Math和JSON。

注重:javascript基础语法供应的内置函数和要领只要这些,像Window、Navigator那是浏览器供应给我们的。另有一点前面的集合都是内置函数而不是内置对象,末了的Math和JSON是内置对象,这个在我们今后的章节讲原型链的时刻就邃晓了,这里先记着就OK了。

几个常见题目

什么时候运用运用==什么时候运用===

这个题目人人应当都不生疏,在开辟或许口试中会常常遇见的题目。那末答案究竟是什么呢?
起首看到这个题目的时刻先不要去想究竟那些情况运用==那些情况运用===,我们应当起首去想这个题目背地涉及到那些知识点。很显然,这里考的就是强迫范例转换,在运用==得时刻会强迫范例转换,而运用===的时刻不会发作强迫范例转换。强迫范例转换人人应当都晓得。下面我们总结一下:
在if()前提推断中0、””、NaN、null、undefined、false都邑转为false,推断对象的一个属性存在能够运用以下语法:

var obj = {}
if(obj.name == null){...} // 相当于obj.name === null || obj.name === undefined
/* 该要领只适用于推断对象的属性,不能用于直接推断变量是不是存在 */
if(someVal){...} // 这里浏览器会报错

规范答案是:只要在推断一个对象的属性是不是存在的时刻运用==,其他都运用===。

typeof可否正确推断变量范例

这里起首想到的是对typeof和变量范例的邃晓,因为typeof只能辨别基础范例的变量,所以不能正确的推断变量范例。

Undefined  -- Undefined  
Boolean    -- Boolean
Number     -- Number     
String     -- String


----------
Object     -- Object
Function   -- Function
Array      -- Object
null       -- Object

所以答案是typeof只能推断值范例的变量,不能推断援用范例的变量,要想正确推断变量的范例,能够在今后的原型的章节中引见

    原文作者:zhuqitao
    原文地址: https://segmentfault.com/a/1190000013072368
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞