JavaScript - 语言提高
一、语言细节和技巧
1、typeof、null 和 undefined
typeof 操作符来检测变量的数据类型。
null 表示 "什么都没有"的空值,undefined 表示没有设置值。
2、数据类型转换
(1) 通过使用 JavaScript 函数
(2) 通过 JavaScript 自身自动转换
3、正则表达式
语法: /正则表达式主体/修饰符(可选)
修饰符包括: i(大小写忽略)、g(全局匹配)、m(多行匹配)。
常用方法: search() 和 replace()。
4、提升(Hoisting)
变量提升: 变量的声明将被提升到作用域的最顶部,注意只有声明会被提升而定义不会被提升。
函数提升: 函数的声明/定义将被提升到作用域的顶部。
5、严格模式(use strict)
作用: 消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascript做好铺垫。
严格模式下新增关键字: implements、interface、let、package、private、protected、public、static、yield。
6、JavaScript内置对象、属性和方法
Array | Date | eval | function | hasOwnProperty |
Infinity | isFinite | isNaN | isPrototypeOf | length |
Math | NaN | name | Number | Object |
prototype | String | toString | undefined | valueOf |
7、this关键字
在方法中,this 表示该方法所属的对象。
如果单独使用,this 表示全局对象window。
在函数中,this 表示全局对象window。(在函数中在严格模式下,this 是未定义的(undefined)。)
在事件中,this 表示接收事件的元素。
8、let和const
ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。
let 声明的变量只在 let 命令所在的代码块内有效,它实际上增加了全局作用域和函数局部作用域外的代码块作用域。
const 声明一个只读的常量,一旦声明,常量的值就不能改变。
9、void
void关键字指定要计算一个表达式但是不返回值。
比如 javascript:void(0) 没有意义。
二、JavaScript函数
1、函数定义
使用函数声明: function myfunc(a, b) { return a*b; }
使用函数表达式(匿名函数): var myfunc = function (a, b) { return a*b; }
使用Function()构造函数: var myfunc = new Function("a", "b", "return a*b")
2、函数参数
显式参数(Parameters,即形参)、隐式参数(Arguments,即实参)。
函数定义显式参数时没有指定数据类型。函数对隐式参数没有进行类型检测,对隐式参数的个数没有进行检测。
ES5 中如果函数在调用时未提供隐式参数,参数会默认设置为:undefined 。
ES6 支持函数带有默认参数。
JavaScript 函数有个内置的对象 arguments 对象,它包含了函数调用的参数数组。
JavaScript 隐式参数通过值来传递: 函数仅仅只是获取值,隐式参数的改变在函数外不可见。
3、函数调用
作为全局函数调用,此时this指向的是window对象。
作为对象方法调用,此时this指向的是对象。
使用构造器new来调用函数,将会生成一个新的函数对象,此时this不指向任何值。
通过函数对象的call()和apply()两个方法来调用,它们都需要将对象作为第一个参数,此时的this指向的是第一个参数值。
4、闭包
函数可以访问局部变量,也可以访问全局变量;当函数与函数内嵌时,内嵌函数能访问外部函数的局部变量,也可以访问全局变量。
在函数内部创建函数对象,该函数对象就可以访问外层函数的局部变量。
将这个内部创建的函数对象返回,只有通过它才能操作外层函数的私有局部变量,这种机制就是闭包。
三、JavaScript对象
1、对象基础
JavaScript中没有类这个概念,相似的概念就是对象,对象也有继承的概念。(for...in遍历对象时将会遍历对象的属性)
JavaScript 中的所有事物都是对象,对象具有属性和方法;所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。
创建对象有三种方法:
(1) var obj = new Object(); obj.name = "java"; obj.color = "red";
(2) var obj = {name: "java", color: "red"};
(3) 对象构造器: function func(name, color) { this.name = name; this.color = color} | var obj = new func("java", "red");
JavaScript对象手册: https://www.runoob.com/jsref
2、Number对象
属性: MAX_VALUE、MIN_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY、NaN、prototype、constructor。
方法: toExponential()、toFixed()、toPrecision()、toString()、valueOf()。
3、String对象
属性: length、prototype、constructor。
方法: charAt()、charCodeAt()、concat()、fromCharCode()、indexOf()、lastIndexOf()、match()、replace()、
search()、slice()、split()、substr()、substring()、toLowerCase()、toUpperCase()、valueOf()。
4、Boolean对象
在逻辑判断中,这些值将会认定为false: 0、-0、null、""、false、undefined、NaN。
属性: prototype、constructor。
方法: toString()、valueOf()。
5、Array对象
使用var x = new Array(); 来创建,不同数组下标所指向的可以是不同类型的对象。
属性: length、prototype、constructor。
方法: concat()、...、toString()、valueOf()。
6、Date对象
属性: prototype、constructor。
方法: getDate()、...、toString()、valueOf()。
7、Math对象
属性: E、LN2、LN10、LOG2E、LOG10E、PI、SQRT1_2、SQRT2
方法: abs(x)、...、sqrt(x)、tan(x)。
8、RegExp对象
属性: global、ignoreCase、lastIndex、multiline、source、constructor。
方法: compile()、exec()、test()、toString()、search()、match()、replace()、split()。
转载于:https://www.cnblogs.com/ringboow/p/11118553.html
JavaScript - 语言提高相关推荐
- JavaScript语言基础(二)
一.之前介绍了JavaScript语言基础的关键字.标识符.常用的数据类型,文章地址:JavaScript语言基础(一) ,下面来介绍JavaScript基础中的常量和变量. 1.常量:当程序运行时, ...
- java云同桌学习系列(十四)——JavaScript语言
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以随着我的步伐一起进步,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...
- 《JavaScript语言精粹》学习笔记(函数(2))
<JavaScript语言精粹>学习笔记(函数(2)) 函数(Functions) 参数(Arguments) 当参数被调用时,会得到一个"免费"的参数数组argume ...
- node.js基于JavaScript语言新兴框架
node.js基于JavaScript语言,不在单用学习一门新的语言,从而降低了陌生语言的门槛,同时js语言在web前端开发至关重要,特别HTML5必须使用,前后台语言统一,不仅可以实现程序员全栈开发 ...
- javascript语言精粹 微盘_JavaScript语言精粹(修订版)pdf
摘要 "学习.理解.实践大师的思想,我们才有可能站在巨人的肩上,才有机会赶超大师,这本书就是开始." "这是一本介绍JavaScript语言本质的重要书籍,值得任何正在或 ...
- JavaScript语言精髓与编程实践(第2版)
JavaScript语言精髓与编程实践(第2版) 周爱民 著 ISBN 978-7-121-15640-3 2012年3月出版 定价:79元 16开 476页 宣传语:以JavaScript视角看整 ...
- JavaScript语言发展史
JavaScript伴随着互联网的发展一起发展.互联网周边技术的快速发展,刺激和推动了JavaScript语言的发展. 1996年,样式表标准CSS第一版发布. 1997年,DHTML(Dynamic ...
- 《JavaScript语言精粹 修订版》 读书笔记
之前看到这篇文章, 前端网老姚浅谈:怎么学JavaScript?,说到怎么学习JavaScript,那就是 看书.分析源码. 10本书读2遍的好处,应该大于一本书读20遍. 看书主动学习,看视频是被动 ...
- JavaScript语言精粹——函数(第二部分)
九.参数 十.返回 十一.异常 十二.扩充类型的功能 十三.递归 十四.作用域 十五.闭包 十六.回调 十七.模块 十八.级联 十九.套用 二十.记忆 九.参数: 当函数被调用的时候,会得到一个 &q ...
最新文章
- MySQL在创建相同表结构时as和like 使用的区别
- GitHub添加SSH keys报错Key is invalid. It must begin with 'ssh-ed25519', 'ssh-rsa', 'ssh-dss', 'ecdsa-sha
- 大数据对六大领域的挑战
- mAP提升40%!YOLO3改进版—— Poly-YOLO:更快,更精确的检测和实例分割
- moco常用配置参数及实战
- XManager 远程访问 Ubuntu16.04 图形界面
- From Apprentice To Artisan 翻译 17
- 私有成员变量理解的补充
- 我怕三十的红包太多,先发为敬!
- 什么是Complement(补码)?(转)
- Android全局变量使用
- 数据库工程师基础学习1----计算机硬件基础知识,计算机体系结构与存储系统
- 谷歌浏览器android插件开发工具,ARC Welder插件 - 将安卓应用APK安装到谷歌浏览器并运行...
- 常见的相机输出接口CVBS、VGA、DVI、HDMI、SDI、Camera Link、HS-LINK、CoaXPress
- ffmpeg的一些用法,不定期更新
- Android FBReader基础资料文档
- 用C语言编写的骂人的软件,“骂人软件”再智能 暴力永远是暴力
- 光子晶体中的平面波展开法学习
- 数据分析利器之hive优化十大原则
- 触摸屏中应用的电容式触摸芯片
热门文章
- 微信小程序基础库版本与微信版本对应关系
- 加拿大政府正式为IT项目管理的成本估计作出规定
- AutoCAD Civil 3D坐标几何(COGO)输入
- Android面试题之动画+事件处理篇
- 构建一体化数字营销平台,助力医药企业实现销售转化能级大幅跃迁 | 案例研究
- php工具能自动出代码的,打造自己的PHP半自动化代码审计工具
- 利用sympy库求解常微分方程:dsolve()函数
- 用微信第三方平台授权小程序业务
- EPW的输入文件浅析
- 喜报丨武汉无名创新科技有限公司荣获国家“高新技术企业”证书,将助力高校科研与竞赛无人机产业加速发展!