弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】


Posted in Javascript onAugust 07, 2019

本文实例讲述了弱类型语言javascript开发中的一些坑。分享给大家供大家参考,具体如下:

测试1: (未声明变量自动提升为全局变量)

test1();
function test1() {
  function setName() {
    name = '张三'; // 此处没有var声明,提升至全局
  }
  setName();
  console.log(name);// '张三'
}

测试2: (函数内部局部变量的变量提升)

test2();
function test2() {
  var a = 1;
  function haha() {
    console.log(a);
    var a=1;
  }
  haha(); // undefined
}

测试3: (给window对象挂载属性,作用域提升至全局)

test3();
function test3() {
  var b=2;
  function hehe(){
    window.b = 3; // 此时的b为全局变量的b
    console.log(b); // 此时的b是函数test3()里的b为2
  }
  hehe();
}

测试4: (变量提升,局部作用域的综合)

test4();
function test4() {
  c = 5;
  function heihei() {
    var c;
    window.c = 3;
    console.log(c); // 函数heihei内的c为undefined
    console.log(window.c); // 3
  }
  heihei();
}

测试5: (数组的长度的问题)

test5();
function test5() {
  var arr = [];
  arr[0] = '1';
  arr[1] = 'b';
  arr[9] = 100;
  console.log(arr.length); // 10
}

测试6: (等与全等的问题)

test6();
function test6() {
  var a = 1;
  console.log(a++); // 1
  console.log(++a); // 3
  console.log(null == undefined); // true
  console.log(null === undefined);// false
  console.log(1 == "1"); // true
  console.log(1 === "1"); // false
  console.log(NaN === NaN) // false;
}

测试7: (类型相关)

test7();
function test7() {
  console.log(typeof 1); // number
  console.log(typeof "hello"); // string
  console.log(typeof typeof "hello"); // string
  console.log(typeof !!"hello"); // boolean
  console.log(typeof /[0-9]/); // object
  console.log(typeof {}); // object
  console.log(typeof null); // object
  console.log(typeof undefined); // undefined
  console.log(typeof [1, 2, 3]); // object
  console.log(toString.call([1, 2, 3])); // [object Array]
  console.log(typeof function () {}); // function
}

测试8: (parse函数相关)

test8();
function test8() {
  console.log(parseInt(3.14));// 3
  console.log(parseFloat('3.01aaa'));// 3.01
  console.log(parseInt('aa1.2'));// NaN;
  console.log(parseInt('8.00',16));// 8
  console.log(parseInt('0x8',16));// 8
  console.log(parseInt('8.00',10));// 8
  console.log(parseInt('010',8));// 10
  console.log(parseInt('1000',2));// 1000
}

测试9: (变量提升,函数提升与return后阻断执行)

test9();
function test9() {
  function bar() {
    return foo;
    foo = 10;
    function foo(){};
  }
  console.log(typeof bar()); // 'function'
}

测试10: (作用域与函数提升)

test10();
function test10() {
  var foo = 1;
  function bar() {
    foo = 10;
    console.log(typeof foo);
    return;
    function foo(){};
  }
  bar(); // number
  console.log(foo); // 1
}

测试11: (变量提升与函数提升)

test11();
function test11() {
  console.log(typeof a); // function
  var a = 3;
  function a(){};
  console.log(typeof a); // number
}

测试12: (arguments对象)

test12();
function test12() {
  function foo(a) {
    console.log(a);// 1
    arguments[0] = 2;
    console.log(a);// 2
    console.log(arguments.length);// 3
  }
  foo(1,3,4);
}

测试13: (中间函数名,直接使用会报错)

test13();
function test13() {
  var foo = function bar(name) {
    console.log("hello " + name);
  }
  foo("world");
  console.log(bar); // 此处会报错 bar is not defined
}

测试14: (在js中定时器,最后执行,涉及到的知识点是事件循环和事件队列)

test14();
function test14() {
  function foo() {
    console.log('I am foo');
  }
  console.log('正常执行');
  setTimeout((function(){
    console.log('定时器大灰狼来啦');
  }),0);
  foo();
}

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JS与框架页的操作代码
Jan 17 Javascript
理解Javascript_08_函数对象
Oct 15 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
JS原型、原型链深入理解
Feb 27 Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
Apr 19 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 Javascript
vue.js指令v-for使用以及下标索引的获取
Jan 31 Javascript
JS实现简单随机3D骰子
Oct 24 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 Javascript
Nuxt配置Element-UI按需引入的操作方法
Jul 06 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 #Javascript
javascript for循环性能测试示例
Aug 07 #Javascript
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 #Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 #Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 #Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 #Javascript
javascript中的数据类型检测方法详解
Aug 07 #Javascript
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
python中Genarator函数用法分析
2015/04/08 Python
Win8下python3.5.1安装教程
2020/07/29 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
个人简历自我评价八例
2013/10/31 职场文书
数控技术专业推荐信
2013/11/01 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
新手初学Java网络编程
2021/07/07 Java/Android