弱类型语言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 相关文章推荐
jQuery与ExtJS之选择实例分析
Aug 19 Javascript
javascript引用赋值(地址传值)用法实例
Jan 13 Javascript
JavaScript动态加载样式表的方法
Mar 21 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
Jan 20 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
Sep 16 Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
ES6概念 Symbol toString()方法
Dec 25 Javascript
JavaScript实现隐藏省略文字效果的方法
Apr 27 Javascript
vuejs使用递归组件实现树形目录的方法
Sep 30 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
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
python发腾讯微博代码分享
2014/01/10 Python
Python学习笔记_数据排序方法
2014/05/22 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
总结python中pass的作用
2019/02/27 Python
python多任务之协程的使用详解
2019/08/26 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
优秀生推荐信范文
2013/11/28 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
军训自我鉴定范文
2014/02/13 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
法人代表授权委托书
2014/04/08 职场文书
2014年政协工作总结
2014/12/09 职场文书
大学生学年个人总结
2015/02/15 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
详解SQL的窗口函数
2022/04/21 Oracle