JS面试—变量类型和计算

目录

一、题目

1、Js中使用typeof能得到的那些类型

2、何时使用===何时使用==

3、Js中有哪些内置函数 ——数据封装类对象

4、Js变量按照存储方式区分为那种类型,并描述其特点

5、如何理解json

二、知识点

2.1 变量类型

2.2 变量计算


一、题目

1、Js中使用typeof能得到的那些类型

2、何时使用===何时使用==

其他地方都用三等 (代码洁癖  )只在以下俩种使用==

  • 判断对象的属性是否存在
var obj = {}
if (obj.a == null) {
    // 这里相当于 obj.a === null || obj.a === undefined 的简写形式
    // 这是jquery源码中推荐的写法
}
  • 判断函数的参数是否存在
function fn(a, b) {
    if (b == null) {
        // 这里相当于 b === null || b === undefined 的简写形式
    }
}

3、Js中有哪些内置函数 ——数据封装类对象

这些内置函数的具体讲解 参考 http://blog.sina.com.cn/s/blog_c112a2980102xl0d.html

Object,Array,Boolean,Number,String,Function,Date,RegExp,Error

有什么作用,后边原型链那一块讲 

4、Js变量按照存储方式区分为那种类型,并描述其特点

  • 值类型的特点:它每个变量都能存储各自的值,不会相互影响
  • 引用类型的特点:不同变量之间的值,会相互影响

5、如何理解json

是一个JS对象,也是一种数据格式

JSON.stringify({a:10,b:20});//"{"a":10,"b":20}" 把对象序列化成成一个JSON的字符串
JSON.parse('{"a":10,"b":20}');//{a:10,b:20}  把JSON字符串反序列化成一个对象

二、知识点

2.1 变量类型

值类型 vs 引用类型

 引用类型 对象,数组,函数  内存共用空间

var a=20;
var b=a;
a=21;
console.log(b);  //20
var a={age:20};
var b=a;
b.age=21;
console.log(a.age);  //21

特点:从内存中来说,值类型是把每一个值都存到变量内存的位置,比如a存了100,把b赋值给a,b的位置又存了100这个数字,a的位置把100改成200,b的位置等于100,还是100,所以它不会相互影响。

引用类型他不一样,引用类型是把a赋值成一个对象,这个对象存在另一个地方,a内存的位置是通过一个指针指向这个对象的地方,把b赋值成a的时候,其实是定义了一个b,b的指针又指向了那个对象的位置,所以这个age=20这个对象只有一份,a和b同时指向了这个对象而已,所以说当执行第三行b.age=21的时候,那个age的值已经改成了21,所以a也是指向这个对象,所以说a.age也是21。

引用类型为什么要这样做,而不是直接拷贝也存储一份?引用类型可以无限制扩展属性,比如现在它有个age属性,我们也可以加name属性啊,grade属性啊,等等等等很多属性,属性加多了之后,会出现内存占用比较多的问题。在值类型中a=100,把b赋值成a,相当于把100又重新拷贝了一份存下,没有关系,因为100不会占用很多内存。如果这个地方把a赋值成一个对象,但是它又特别大,b再赋值成a,b也拷贝复制一份,他就会占很大的空间,这是不合理的,所以说为了让内存共用空间,才会出现引用类型这种方式。

 

Typeof  只能区分出值类型四种,引用类型都是object和function   总共六种

typeof undefined //undefined
typeof 'abc'     //string
typeof 123      //number
typeof true     //bollean
typeof {}       //object
typeof []       //object
typeof null     /object
typeof console.log  //function

2.2 变量计算

强制类型转换

  • 字符串拼接
var a=100+10 ;//110
var b=100+"10" //10010
  • ==运算符
100=='100';  //true
0=='';  //true   都转换为false
null ==undefined;  //true  都转换为false
  • If语句
var a=true
if(a){
    
}
var b=100
if(b){
    
}
var c=''
if(c){
    
}
  • 逻辑运算
console.log(10 && 0)  //0  true && false
console.log('' || 'abc' )  //'abc
console.log(!window.abc) //true  window.abc是undefined
//判断一个变量会内当做 true 还是false
var a=100
console.log(!!a)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值