JS基础随笔(菜鸟必看篇)


Posted in Javascript onJuly 13, 2016

在学习的过程中总会一次次的冒出以前囫囵吞枣的地方,下面将今天学到的一下知识点记录下来方便以后查看。

JavaScript中的数据类型

简单(基本)数据类型:Number、String、Boolean、Undefined、Null

复杂(引用)数据类型: Object、Array、Date、function等

下面介绍一下简单(基本)数据类型和复杂(引用)数据类型的区别:

简单数据类型:在栈内直接存储值,如下图所示     

JS基础随笔(菜鸟必看篇)                                     

复杂数据类型:在栈内存储引用,如下图

    JS基础随笔(菜鸟必看篇)

在了解以上两种数据类型的存储方式之后可以区分两者的不同,可通过做以下的练习:

var a =10;
  var b = a;
  //问:当改变a的值后,b的值是否发生改变
  a=20;
  console.log(b);  // 10
var s1 = new Object();
var s2 = s1;
//问:改变s1的属性后,s2相同的属性是否改变
s1.name = "mh";
console.log(s2.name);    //mh
function f2(arr)
     {
       arr = [9,8,7,6,5];//产生新的对象
       arr[0]=-100;
     }
     var array = [1,2,4,7,5];
     f2(array);
     console.log(array[0]);//  1

JavaSript中的变量提升,function声明以及变量作用域

首先先看以下下面的一道面试题:

var num = 10;
    fun();
    function fun()
    {
      console.log(num);
      var num =20;
    }

在没有学习之前我会直接回答为10,现在学习JavaScript中的预编译概念知道了var关键字的提升概念以及function的声明概念知道了以上代码与下面代码等量:

var num;//全局作用域  遇到var和function 提升
     function fun() {
       var num ;  //局部做用户 遇到var 提升
       console.log(num);
       num =20;
     }
    num = 10;
    fun();

再看下面这道题:

//问题:为什么会出现下面的错误?
      //Uncaught TypeError:fnName is not a function

      console.log(fnName(1,2));
      var fnName = function (a,b) {
        return a + b;
      }

以上代码等同于以下代码:

var fnName;
      console.log(fnName(1,2));
      fnName = function (a,b) {
        return a + b;
      }

可以看到因为function在等号右面所以只会对var进行提升,从而会报“Uncaught TypeError:fnName is not a function”错误。

了解变量的作用域可以看以下代码:

f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1() {
          var a = b = c = 20;
          console.log(c);
          console.log(b);
          console.log(a);
        }

对于var a=b=c=20; 这类连续赋值,在局部作用域内只会对a再声明,而b、c的作用域为全局作用域。所以只有全局作用域内的a报错为"Uncaught ReferenceError: a is not defined"。

以上这篇JS基础随笔(菜鸟必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript void(0)的妙用
Oct 21 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
JS远程获取网页源代码实例
Sep 05 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
Dec 15 Javascript
jQuery自定义插件详解及实例代码
Dec 29 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
Aug 06 Javascript
JS动画定时器知识总结
Mar 23 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 #Javascript
jQuery实现div横向拖拽排序的简单实例
Jul 13 #Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 #Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 #Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 #Javascript
javascript类型系统——undefined和null全面了解
Jul 13 #Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 #Javascript
You might like
php引用地址改变变量值的问题
2012/03/23 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
js常用函数 不错
2006/09/08 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
新东网科技Java笔试题
2012/07/13 面试题
自考自我鉴定范文
2013/10/30 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
公司租房协议书
2014/10/14 职场文书
2015年教师节广播稿
2015/08/19 职场文书
python库sklearn常用操作
2021/08/23 Python