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 相关文章推荐
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
Aug 12 Javascript
js时间戳转为日期格式的方法
Dec 28 Javascript
JS中如何比较两个Json对象是否相等实例代码
Jul 13 Javascript
浅谈AngularJs指令之scope属性详解
Oct 24 Javascript
js轮播图的插件化封装详解
Jul 17 Javascript
vue 怎么创建组件及组件使用方法
Jul 27 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
Vue 表情包输入组件的实现代码
Jan 21 Javascript
vue-cli3项目展示本地Markdown文件的方法
Jun 07 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
js中Object.create实例用法详解
Oct 05 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通过API获取手机号码归属地
2015/05/28 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
非常实用的php验证码类
2016/05/15 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
js实现随机点名
2021/01/19 Javascript
Python生成随机数的方法
2014/01/14 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
细节决定成败演讲稿
2014/05/12 职场文书
婚前财产协议书范本
2014/10/19 职场文书
家长会感言
2015/08/01 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript