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 相关文章推荐
OfflineSave离线保存代码再次发布使用说明
May 23 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
JavaScript错误处理
Feb 03 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
js 只比较时间大小的实例
Oct 26 Javascript
手把手教你使用vue-cli脚手架(图文解析)
Nov 08 Javascript
react+redux的升级版todoList的实现
Dec 18 Javascript
layui的面包屑或者表单不显示的解决方法
Sep 05 Javascript
vue大型项目之分模块运行/打包的实现
Sep 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模拟登陆的实现方法分析
2015/01/09 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
python使用scrapy解析js示例
2014/01/23 Python
使用graphics.py实现2048小游戏
2015/03/10 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
python实现二分查找算法
2017/09/21 Python
pandas string转dataframe的方法
2018/04/11 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
python实现超级马里奥
2020/03/18 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
原料仓管员岗位职责
2014/04/12 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
Java数组与堆栈相关知识总结
2021/06/29 Java/Android