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()。

posted on 2019-07-02 11:32 丘奇先生 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ringboow/p/11118553.html

JavaScript - 语言提高相关推荐

  1. JavaScript语言基础(二)

    一.之前介绍了JavaScript语言基础的关键字.标识符.常用的数据类型,文章地址:JavaScript语言基础(一) ,下面来介绍JavaScript基础中的常量和变量. 1.常量:当程序运行时, ...

  2. java云同桌学习系列(十四)——JavaScript语言

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以随着我的步伐一起进步,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...

  3. 《JavaScript语言精粹》学习笔记(函数(2))

    <JavaScript语言精粹>学习笔记(函数(2)) 函数(Functions) 参数(Arguments) 当参数被调用时,会得到一个"免费"的参数数组argume ...

  4. node.js基于JavaScript语言新兴框架

    node.js基于JavaScript语言,不在单用学习一门新的语言,从而降低了陌生语言的门槛,同时js语言在web前端开发至关重要,特别HTML5必须使用,前后台语言统一,不仅可以实现程序员全栈开发 ...

  5. javascript语言精粹 微盘_JavaScript语言精粹(修订版)pdf

    摘要 "学习.理解.实践大师的思想,我们才有可能站在巨人的肩上,才有机会赶超大师,这本书就是开始." "这是一本介绍JavaScript语言本质的重要书籍,值得任何正在或 ...

  6. JavaScript语言精髓与编程实践(第2版)

    JavaScript语言精髓与编程实践(第2版)  周爱民 著 ISBN 978-7-121-15640-3 2012年3月出版 定价:79元 16开 476页 宣传语:以JavaScript视角看整 ...

  7. JavaScript语言发展史

    JavaScript伴随着互联网的发展一起发展.互联网周边技术的快速发展,刺激和推动了JavaScript语言的发展. 1996年,样式表标准CSS第一版发布. 1997年,DHTML(Dynamic ...

  8. 《JavaScript语言精粹 修订版》 读书笔记

    之前看到这篇文章, 前端网老姚浅谈:怎么学JavaScript?,说到怎么学习JavaScript,那就是 看书.分析源码. 10本书读2遍的好处,应该大于一本书读20遍. 看书主动学习,看视频是被动 ...

  9. JavaScript语言精粹——函数(第二部分)

    九.参数 十.返回 十一.异常 十二.扩充类型的功能 十三.递归 十四.作用域 十五.闭包 十六.回调 十七.模块 十八.级联 十九.套用 二十.记忆 九.参数: 当函数被调用的时候,会得到一个 &q ...

最新文章

  1. MySQL在创建相同表结构时as和like 使用的区别
  2. GitHub添加SSH keys报错Key is invalid. It must begin with 'ssh-ed25519', 'ssh-rsa', 'ssh-dss', 'ecdsa-sha
  3. 大数据对六大领域的挑战
  4. mAP提升40%!YOLO3改进版—— Poly-YOLO:更快,更精确的检测和实例分割
  5. moco常用配置参数及实战
  6. XManager 远程访问 Ubuntu16.04 图形界面
  7. From Apprentice To Artisan 翻译 17
  8. 私有成员变量理解的补充
  9. 我怕三十的红包太多,先发为敬!
  10. 什么是Complement(补码)?(转)
  11. Android全局变量使用
  12. 数据库工程师基础学习1----计算机硬件基础知识,计算机体系结构与存储系统
  13. 谷歌浏览器android插件开发工具,ARC Welder插件 - 将安卓应用APK安装到谷歌浏览器并运行...
  14. 常见的相机输出接口CVBS、VGA、DVI、HDMI、SDI、Camera Link、HS-LINK、CoaXPress
  15. ffmpeg的一些用法,不定期更新
  16. Android FBReader基础资料文档
  17. 用C语言编写的骂人的软件,“骂人软件”再智能 暴力永远是暴力
  18. 光子晶体中的平面波展开法学习
  19. 数据分析利器之hive优化十大原则
  20. 触摸屏中应用的电容式触摸芯片

热门文章

  1. 微信小程序基础库版本与微信版本对应关系
  2. 加拿大政府正式为IT项目管理的成本估计作出规定
  3. AutoCAD Civil 3D坐标几何(COGO)输入
  4. Android面试题之动画+事件处理篇
  5. 构建一体化数字营销平台,助力医药企业实现销售转化能级大幅跃迁 | 案例研究
  6. php工具能自动出代码的,打造自己的PHP半自动化代码审计工具
  7. 利用sympy库求解常微分方程:dsolve()函数
  8. 用微信第三方平台授权小程序业务
  9. EPW的输入文件浅析
  10. 喜报丨武汉无名创新科技有限公司荣获国家“高新技术企业”证书,将助力高校科研与竞赛无人机产业加速发展!