JS变量按存储方式区分为哪些类型?:

  js变量按照存储方式分为两种类型:值类型 和 引用类型

  1.值类型(基本类型)

     布尔值(boolean) 、 null 、undefined 、数值(number)、字符串( string) 、Symbol(表示独一无二的值)

  2.引用类型

    对象(Object)、数组(Array)、函数(Function)

JS中使用typeof 能得到哪些类型:

  typeof 可以得到的类型有:undefined、string、boolean、number、object、function

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

  注:typeof null  ,结果是object 。原因在于,null类型被当做一个空对象引用

引用类型可以是instanceof 来判断:

console.log({} instanceof Object)
console.log([] instanceof Array)

值类型和引用类型的区别:

  值类型:

    1. 占用空间固定,存储在栈中

    2.随着方法的执行结束,这个方法的内存栈也将自然销毁

    3. 保存预付制的是本身

    4. 使用typeof监测数据的类型

  引用类型:

    1.占用空间不固定,存储在堆中,栈中只存储对象的地址

    2.堆中的对象不会随着方法的结束而销毁,只要有一个变量所引用,这个对象就不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会回收它。

    3. 保存与复制的是指向对象的一个指针

    4. 使用 instanceof检测数据类型

显式类型转换:

  1. 显式类型转换 Number(arg)

    输入的arg是原始类型的情况:

      数值:转换后还是原来的值 。eg: Number(123) // 123

      字符串:如果可以解析为数值,则转换为相应的数值,否则为NaN。空字符串转换为:0。

          eg: Number('123') // 123 ; Number('123df') //NaN    Number('') // 0

      布尔值: true转换为1,false转换为 0。eg:Number(true) // 1; Number(false) // 0

      undefined: 转换成NaN。 eg: Number(undefined) // NaN

      null: 转换成0 。 eg: Number(null) // 0

    arg是对象类型的情况:

      先调用对象自身的valueOf()方法,如果该方法返回原始数据类型,则直接对该值使用Number方法,不再进行后续步骤。

      如果valueOf()放回的是复合数据类型,再调用对象自身的toString(),如果toString()返回的是原始数据类型的值,则对该值使用Number(),不在进行后续步骤。

      如果toString()返回的是复合数据类型的值,则报错。

  2. 显式类型转换 String(arg)

    arg是原始类型的情况:

      数值:转换为相应的字符串 。eg: String(123) // '123'

      字符串:转换后还是原来的值 eg: String('ab') // 'ab';

      布尔值: true转换为"true",false转换为 "false"。eg:String(true) // 'true' ; String(false) // 'false'

      undefined: 转换成"undefined"。 eg: String(undefined) // "undefined"

      null: 转换成"null" 。 eg: String(null) // "null"

    arg是对象类型的情况:

      先调用toString()方法,如果toString()返回的是原始数据类型,则对该值使用String()方法,不再进行以下步骤。

      如果toString方法返回的是复合数据类型的值,再对该值使用valueOf方法,如果valueOf()返回的是原始数据类型的值,则对该值使用String方法,不在进行以下步骤。

      如果valueOf方法返回的是复合类型的值,则报错。

  3. 显式类型转换 Boolean(arg)

      只有当arg是 undefined 、null、 -0 、+0 、NaN 、''(空字符串)时 将转换为false,否则其他的情况一律转换为true;

隐式类型转换:

  1. 四则运算

    console.log(100 + '10') //
console.log(100 - '10') //
console.log(100 * '10') //
console.log(100 / '10') //
console.log(100 % '10') //

  2. 判断语句

  var a = 100;
if(a){ //数值 100 转成 布尔值 true
//....
}
var b = '';
if(b){ //将字符串'' 转成 布尔值 false
//....
}

  3. Native调用 (console.log 和 alert 自动转换为字符串类型)

  4.==运算符

  console.log(123 == '123') //true
console.log(0 == '') //true
console.log(null == undefined) //true

  5.逻辑运算符  

  console.log(10 && 0) //0  10转成ture
console.log('' || 'abc') // 'abc' ''转成false
console.log(!window.a) //true

Javascript中 何时使用 " ==="  何时使用  "=="?

  使用“===”情况:

     通常情况下,我们都需要写成“===”。因为“===”不用进行类型转换。在大部分浏览器中“===” 比 "=="速度更快。

  使用“==”情况:

    使用“==”的情况很少,有两种情况下使用:

    1.判断对象的属性是否存在

    var obj = {};
if(obj.a == null){
//这里相当于 obj.a === null || obj.a === undefined 的简写形式
//这是jquery源码中推荐写法
}

     2. 判断函数的参数是否存在:

  function fn(a,b){
if(b == null){
//这里相当于 b=== null || b===undefined 的简写形式
}
}

JS中有哪些内置函数(抛开浏览器 只谈javascript)

  Object

  Array

  Boolean

  Number

  String

  Function

  Date

  RegExp

  Error  

如何理解JSON

  1. JSON,是一种数据格式,在于后端的数据交互中较为广泛的应用

  2. JSON 也是JS 对象,常用API:JSON,string()和json.parse()

JS 变量 相关内容的更多相关文章

  1. JS动态增加删除UL节点LI及相关内容示例

    <ul id="ul"> <li id=1>11111111111111111<a href="javascript:del(1);&quo ...

  2. JS规则 多样化的我(变量赋值)我们使用"="号给变量存储内容,你可以把任何东西存储在变量里,如数值、字符串、布尔值等,

    多样化的我(变量赋值) 我们可以把变量看做一个盒子,盒子用来存放物品,那如何在变量中存储内容呢? 我们使用"="号给变量存储内容,看下面的语句: var mynum = 5 ; / ...

  3. Django模板语言相关内容

    Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言中按此语法使用:{{ 变量名 ...

  4. iframe子页面与父页面元素的访问以及js变量的访问

    1.子页面访问父页面元素  parent.document.getElementById('id')和document相关的方法都可以这样用 2.父页面访问子页面元素  document.getEle ...

  5. Django模板语言相关内容 Djan

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  6. Django——模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  7. 6月15日 python学习总结 Django模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  8. js变量及其作用域(附例子及讲解)

    Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量   工具/原料   Ch ...

  9. javascirpt对象运用与JS变量

    abcdefghijklmnopqrstuvwyz String 对象方法 charAt() 方法可返回指定位置的字符.stringObject.charAt(index)(index从0开始)[ht ...

随机推荐

  1. BZOJ 1005: [HNOI2008]明明的烦恼(高精度+prufer序)

    传送门 解题思路 看到度数和生成树个树,可以想到\(prufer\)序,而一张规定度数的图的生成树个数为\(\frac{(n-2)!}{\prod\limits_{i=1}^n(d(i)-1)!}\) ...

  2. 回调函数 和 promise对象,及封装API接口

    1.回调函数:https://blog.csdn.net/baidu_32262373/article/details/54969696 注意:回调函数不一定需要用到 return.如果浏览器支持Pr ...

  3. PHP-文件和目录操作

    目录操作 创建目录:mkdir(目录地址, 权限, 是否递归创建 = false); 删除目录:rmdir(目录地址);(仅仅可以删除空目录,不支持递归删除) 移动(改名):rename(旧地址, 新 ...

  4. Java关于Math类的三个取整方法

    0x01 在java的Math类中有三个关于浮点数取整数的方法,分别是ceil (向上取整) floor(向下取整) round(四舍五入) 三个方法 0x02 ceil 向上取整,取整后总是比原来的 ...

  5. 05、python的基础-->字典的增、删、改、查

    1.字典的增 dict = {'age':19,'name':'老王','hobby':'girl'} dict['sex'] = 'boy' #没有键值对,直接添加 dict[' #有键值对,覆盖值 ...

  6. [已解决]报错:xlrd.compdoc.CompDocError: Workbook: size exceeds expected 17920 bytes; corrupt?

    报错代码如下: filePath='test.xls' data=pd.read_excel(filePath) print(data.head()) 报错内容如下: Traceback (most ...

  7. USACO Wifi Setup /// 贪心

    题目大意: 若在x处防止一个覆盖范围为r的wifi基站 可以覆盖 x-r 到 x+r 范围 花费为 A+B*r 给定n 给定n个奶牛的位置 求覆盖所有奶牛的最小费用 (可设置任意多个wifi基站) 贪 ...

  8. JSP版本的数据库操作

    代码时间:2015-6-16 <%@ page language="java" import="java.util.*" pageEncoding=&qu ...

  9. 惠普笔记本Ubuntu系统HDMI无输出

  10. 【Luogu】【关卡1-8】BOSS战-入门综合练习2(2017年10月)【AK】------都是基础题

    P1426 小鱼会有危险吗 我个人觉得这个题目出的不好,没说明白,就先只粘贴的AC代码吧 #include <bits/stdc++.h> using namespace std; int ...