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 相关文章推荐
漂亮的仿flash菜单,来自蓝色经典
Jun 26 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
javascript 闭包详解
Jul 02 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
使用socket.io实现简单聊天室案例
Jan 02 Javascript
vue组件tabbar使用方法详解
Nov 06 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 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
ftp类(myftp.php)
2006/10/09 PHP
web方式ftp
2006/10/09 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
python使用knn实现特征向量分类
2018/12/26 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
django框架使用方法详解
2019/07/18 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python批量生成条形码的示例
2020/10/10 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
Spy++的使用方法及下载教程
2021/01/29 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
文明寝室申报材料
2014/05/12 职场文书
辞职信的写法
2015/02/27 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
初中军训感想
2015/08/07 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS