提问:

  1. JS中使用typeof能得到的哪些类型
  2. 何时使用===何时使用==
  3. JS中有哪些内置函数
  4. JS变量按照存储方式区分为哪些类型,并描述其特点
  5. 如何理解JSON

涉及知识点:(1)变量类型

  • 值类型 和 引用类型
  • typeof运算符详解  

    ====》值类型:  

      

      【如上栗子,值类型的特点:每个变量都会存储一个地址,不会相互影响】

    ====》引用类型:

      

      【引用类型包括:对象,数组,函数】

      【如上栗子,a和b的指针指向同一个对象地址,共用内容,所以里面的内容会随着变化。  引用类型的特点:可以无限扩大属性(比如说,var a ={age:20,name:james,address:china....})】

  

      注意:  js中的数据类型有以下几种:

        基本类型:Number Boolean  String  undefined null

        引用类型:Object  Function Array

    ====》typeof运算符:

      

      【typeof总共有6中形式(undefinend,string,number,boolean.object,function),比较特殊的是null,就算是空,也是一个object类型。如上,前4种值类型,typeof都区分的出来;针对上面的5-8,typeof只能区分出这个函数属于function类型】

  =================================================================

      (2)变量计算-强制类型转换(值类型)

  • 字符串拼接
  • ==运算符
  • if语句
  • 逻辑运算

      

    ==》字符串拼接        

      

      【如上,第二行代码,字符串拼接时,对数值进行强制类型转换,与后面一起合并成一个字符串】

    ==》==运算符

       

      【如上,第一行代码:100和‘100’都会转换成true;第二行代码:0和‘ ’都会转换成false;第三行代码:null和undefined都会转换成false  ==要慎用,这里如果改为===,结果就不同了】

    ==》if语句

       

      【如上,1-4行代码:a的值为true,所以会执行if语句里面的内容;5-8行代码:b的值为100,这里被强制转换成布尔值类型(true),所以也会执行if语句里面的内容;9-12行代码:c的值为空,这里被强制转换成布尔值类型(false),所以不会执行if语句里面的内容】

    ==》逻辑运算

      

      【如上,第一行代码:与运算符,(10与0),这里会把10强制转换成布尔值(true),即(true与0),所以会执行后面的值0】

      【第二行代码:或运算符,(' '或'abc'),这里会把' '强制转换成布尔值(false),即(false或'abc'),所以也会执行后面的值'abc'】

      【第三行代码:非运算符,因为window.abc未定义,所以是个false值,而前面加个!号,就会把false值转换成true值】

解答:

  1. JS中使用typeof能得到的哪些类型

    答:undefined,string,number,boolean,object,function

   2.  何时使用===何时使用==

    答:

      

      所以只有在判断对象中某个属性的时候用==,其他地方都使用===

    3.  JS中有哪些内置函数

      答:

      

      【补充,Math是对象而不是函数】

    4.  JS变量按照存储方式区分为哪些类型,并描述其特点

    答:

      

      【引用类型的值赋值只是一个变量指针的赋值,而不是真正的一个值的拷贝,他们的值的修改是相互干预的】

      

(1)值类型:1、占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的;栈中存储的是基础变量以及一些对象的引用变量,基础变量的值是存储在栈中,而引用变量存储在栈中的是指向堆中的数组或者对象的地址,这就是为何修改引用类型总会影响到其他指向这个地址的引用变量。)

2、保存与复制的是值本身

3、使用typeof检测数据的类型

4、基本类型数据是值类型

(2)引用类型:1、占用空间不固定,保存在堆中(当我们在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然不会被销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在核实的时候回收它。)

2、保存与复制的是指向对象的一个指针

3、使用instanceof检测数据类型

4、使用new()方法构造出的对象是引用型

   5.  如何理解JSON

     答:

      

      第4行代码:把对象变成字符串;

      第5行代码:把字符串变成对象

     

转载于:https://www.cnblogs.com/ytraister/p/10514091.html

JS——基础知识--变量类型和变量计算相关推荐

  1. (四)JS基础知识一(深入分析变量类型和计算)【不会变量,别说你会JS】

    JS基础知识一(变量类型和计算) 提问 变量类型 值类型 vs 引用类型 (堆栈模型) 值类型 引用类型 typeof 运算符 深拷贝 变量计算 字符串拼接 == if语句和逻辑运算 if语句 逻辑判 ...

  2. js var是什么类型_JS变量的执行环境和生命周期

    温故而知新,这些JS基础知识你都知道吗? 今天和大家分享的是 JavaScript 中有关变量的知识,希望这篇文章能让你对JS中的变量有新的认识. 目录: 变量的执行环境(执行上下文) 执行上下文的生 ...

  3. 【基础知识】C51单片机变量定义

    [基础知识]C51单片机变量定义 摘自<IAP15W4K58S4单片机的存储器与应用编程>主编:丁向荣:主审:姚永平: 在使用一个变量或常量之前,必须先定义该变量或常量,指出其数据类型和存 ...

  4. linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...

    Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...

  5. pl/sql基础知识—定义并使用变量

    n  介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...

  6. Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型、符号、运算符、数组Array总结之详细攻略

    Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组Array总结之详细攻略 目录 Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组总 ...

  7. C++基础学习(02)--(数据类型,变量类型,变量作用域,常量,修饰符类型)

    文章目录 目录 一. 数据类型 C++ 中的数据类型 typedef enumeration枚举类型 c++中变量类型 二.变量作用域 三.常量 四.修饰符类型 目录 一. 数据类型 C++ 中的数据 ...

  8. JS基础知识学习(一)

    JS基础知识 前端开发常用的浏览器 谷歌浏览器(chrome):Webkit内核(v8引擎) 火狐浏览器(firefox):Gecko内核 欧朋浏览器(opera):Presto内核 IE浏览器:Tr ...

  9. 前端学习笔记(js基础知识)

    前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...

  10. php插入js教程,JavaScript_JavaScript入门教程(2) JS基础知识,在什么地方插入 JavaScript  Ja - phpStudy...

    JavaScript入门教程(2) JS基础知识 在什么地方插入 JavaScript JavaScript 可以出现在 HTML 的任意地方.使用标记,你可以在 HTML 文档的任意地方插入 Jav ...

最新文章

  1. pyEcharts安装及详细使用指南
  2. 【大话设计模式】——浅谈设计模式基础
  3. Jupyter Notebook 使用流程
  4. Android端打开HttpDns的正确姿势
  5. 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc
  6. 20180601]函数与标量子查询2.txt
  7. 素短语,最左素短语-编译原理
  8. 批处理中for的参数的用法
  9. 使用 K8S 部署 RSS 全套自托管解决方案- RssHub + Tiny Tiny Rss
  10. [深度学习概念]·CNN网络架构演进:从LeNet到DenseNet(代码实现基于Keras)
  11. java mysql 端口_如何在JAVA中建立MySQL连接?在locahost上设置的端口号是多少?
  12. Html漂亮的table样式模板
  13. 数据资产盘点的流程和方法
  14. 企业微服务治理的解决思路
  15. java文件删除选择框,从列表框中删除文件
  16. cometd java_Jetty cometd(Continuation)学习笔记
  17. ORB-SLAM2代码解析
  18. 为什么信而富显示服务器开小差,剖析:信而富12点后也没额度的真相!
  19. Bochs源码分析 - 11:《X86探索及编程》代码初步解释
  20. 用python-OpenCV做一个魔方墙找茬 (3D视眼训练)

热门文章

  1. Python中文问题
  2. 给你的数据来一个顶层设计
  3. 再流弊的技术,也抵不过一次事故:兼谈技术管理
  4. 关于label在ie8,9下的兼容问题???
  5. 实用收藏Linux命令备忘
  6. Windows Server 2008搭建域环境---安装活动目录
  7. java多线程之Semaphore信号量详解
  8. butter滤波器是iir吗_如何快速设计应用一个IIR滤波器
  9. @scheduled 每30s 执行一次_荣耀30S正式发布:麒麟820 5G SoC/6400万像素AI四摄/40W超级快充...
  10. 一拍是多少秒 计算机制音乐,E哥谈如何计算音乐的拍数及每拍时值是多少及数学好对学音乐有帮助吗?...