[JavaScript语法学习]重新认识JavaScript
JavaScript是实现ECMAScript标准的语言,目前最新的第六版标准于2015年6月发布,简称ES6。目前大多数浏览器都只是实现了ECMAScript标准的第五版。JavaScript的运行需要一个宿主环境,浏览器是最常见的宿主环境,另外还有服务器端环境Node等等。
类型
任何一门编程语言都少不了数据类型,那么在JavaScript中的类型有:
1. Number
2. String
3. Boolean
4. Object (Function, Array, Date, RegExp)
5. Null
6. Undefined
7. Error
8. Symbol
9. Class
虽然说类型有很多,但是只要记住,在JS中只有两种类型:值类型,引用类型。
值类型:number, string, boolean
基本的引用类型:Array, Object, Function
其他的类型都是在ES6中被引入的,包括Class, Symbol 等等。
另外比较特殊的类型就是 null, undefined
于是乎这里引入了第二个问题:typeof 能够得到哪些类型值?
首先,typeof的返回值是字符串
其次,能够得到 string boolean number (三大基本类型) 和 object, function, null, undefined
第三个问题,既然typeof不能用来区分引用类型,那么我该如何来区分引用类型呢?
这时候就需要用到 instanceof 运算符,用来检测一个对象在其原型链上是否具有一个构造函数的prototype属性
更多信息请访问 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof
Number
数字直接量:分为十进制,八进制和十六进制。但是在ES6的严格模式下,禁止使用八进制直接量。
Number对象是经过封装的能够让你处理数字值的对象,Number对象是由Number()构造器创建的。
new Number(value);
JavaScript采用IEEE754标准定义的双精度64位格式(double-precision 64-bit format IEEE754 values),不区分整数值和浮点数值,所有数字都是浮点数值表示,因此小数相加会有精度不准的问题。
内置对象Math处理高级数学函数和常数,内置函数parseInt()将字符串转换为整数,parseFloat()按照十进制格式解析浮点数字符串,运算符+把数字字符串转换为数值,特殊的Number值NaN进行数学运算都是NaN,内置函数isNaN()可以判断一个变量是否为NaN,Infinity, -Infinity分别表示正无穷和负无穷,内置函数isFinity()可以判断一个变量是否为正无穷,负无穷或者NaN
需要详细了解Number可访问 [JavaScript语法学习]全面介绍Number
String
JavaScript中的字符串是一串Unicode字符序列
需要详细了解String可访问 [JavaScript语法学习]全面介绍String
其他类型
null表示空值,必须使用null关键字才能访问。
undefined是未定义类型的对象,表示一个未初始化的值。变量声明但是没有赋值则表示为undefined类型
可以理解为undefined是从null派生出来的一个数据类型,所以undefined == null 为真,但是 undefined === null 为假
布尔值true,false。其他类型的变量转换为布尔值类型的规则: false, 0, "", NaN, null, undefined都转换为false 其他则为true
也可以使用Boolean()函数进行显示转换
最后,提到类型,肯定忘不了类型转换和类型比较。
数据转换涉及到各种类型之间相互转换的规则,而类型比较则是在前者的基础上弄明白==和===这两个比较运算符的区别。
在if语句,+运算符,==,===,!! 以及 逻辑运算 这几种情形下,都会涉及到类型转换。具体的类型转换表如下
[此处的贴图还没有制作好,对不住了]
变量作用域
在ES5中,语句块是没有作用域的,在JS中只有函数才有作用域。 但是从ES6开始,可以使用let, const关键字创建块作用域的变量
函数
函数是JS中的一等公民,如果一个函数没有return语句或者是一个没有值的return语句,则表示返回undefined
如果调用函数时没有提供足够的参数,那么缺少的参数会被undefined替代
函数体中有一个名为arguments的内部对象,是一个类似于数组的对象,但并是array数组,包括了所有传入的参数。
function add(){var sum = 0;for(var i = 0; i < arguments.length; i++){sum += arguments[i];}return sum; } add(2,3,4,5);
function svg(){var sum = 0;for(var i = 0; i < arguments.length; i++){sum+=arguments[i];}return sum/arguments.length; } svg(2,3,4,5);
return语句有个小坑: 前面两个函数执行都没有问题,最后一个返回undefined
function foo(){return { name: "foo"}; }function foo(){return { name: "foo"}; }function foo(){return { name: "foo"}; }
需要详细了解函数类型,可访问 [JavaScript语法学习]全面介绍函数
其他知识点
delete运算符 用于删除一个对象的属性
delete expression
delete object.property
delete object['property']
如果属性是一个不可配置的属性,那么在严格模式下删除会抛出异常,而在非严格模式下返回false. 其他情况下都返回true
只能删除自身属性,而不能删除继承属性
for...in循环只遍历可枚举属性,包含自身和继承的属性
propertyIsEnumerable()返回布尔值,表明指定的属性是否是当前对象可枚举的自身属性
hasOwnProperty() 判断某个对象是否含有指定的自身属性
keys() 返回由给定对象的所有可枚举自身属性的属性名组成的数组
Object.getOwnPropertyNames() 返回由指定对象的所有自身属性的属性名 (包括不可枚举属性) 组成的数组
转载于:https://www.cnblogs.com/joyjoe/p/6160686.html
[JavaScript语法学习]重新认识JavaScript相关推荐
- 《Javascript入门学习全集》 Javascript学习第二季(实战4)
Javascript学习第二季(实战4) 上章的例子虽然实现了功能,也做了相应的判断,也符合标准了.但还有一个问题就是: Choose an image. 在html中只是为了图片切换 而做的,而 ...
- 《Javascript入门学习全集》 Javascript学习第一季(7)
Javascript学习第一季(7) 上篇文章我们讲了 用dom方式 创建节点,复制节点,插入节点. 今天我们将讲 删除节点,替换节点,查找节点等. 直接从方法说起: <!--[if !su ...
- 常用JavaScript语法107条
2019独角兽企业重金招聘Python工程师标准>>> 1.什么是JavaScript? JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又 ...
- javascript基本语法学习(二)
一.JavaScript函数 1.1.函数的基本概念 在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用. 虽然for循环语句也能实现一些简单的重复操作,但是比较具 ...
- JavaWeb学习 JavaScript语法快速学习
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- javascript语言学习
本课将和大家一起学习简单的js dom 操作,涵盖DOM API以及JQuery的方法. 相关简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解 ...
- JavaScript学习总结(九)——Javascript面向(基于)对象编程
转载自 JavaScript学习总结(九)--Javascript面向(基于)对象编程 一.澄清概念 1.JS中"基于对象=面向对象" 2.JS中没有类(Class),但是它取了 ...
- JavaScript学习总结(七)——JavaScript函数(function)
转载自 JavaScript学习总结(七)--JavaScript函数(function) 一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 ...
- JavaScript学习总结(一)——JavaScript基础
转载自 JavaScript学习总结(一)--JavaScript基础 一.JavaScript语言特点 1.1.JavaScript是基于对象和事件驱动的(动态的) 它可以直接对用户或客户输入做 ...
- JavaScript 逆向 ( 一 ) --- JavaScript 语法基础
js 逆向:https://www.cnblogs.com/wuxianyu/category/1940304.html js逆向2:https://www.cnblogs.com/wuxianyu/ ...
最新文章
- Android Studio打开项目所有Java文件的import显示红色
- 智慧农场基本情况交流会议记录
- 数据挖掘之离群点检测
- substring、substr以及slice、splice用法和区别
- 【MyBatis】MyBatis中,大于号、小于号的两种表达方式
- kotlin 第一个程序_Kotlin程序添加两个矩阵
- CentOS 6 和 CentOS 7 防火墙的关闭
- ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
- [EntLib]UAB(Updater Application Block)下载
- Python Scrapy爬虫框架详解
- kettle点击spoon.bat打不开
- html显示当前脚本错误,访问网页总是提示当前网页脚本发生错误怎么办?
- python屏蔽警告
- Java 输入判断5,7倍数
- 假期即将结束,前方道路还很长……CLANNAD,16话,渚就这么香消玉殒了……
- 【OpenCV】 - 图像分割之分水岭算法,watershed()函数的输出,对marker和image的改变
- 如何关闭FileZilla Server开机自启
- 关于MAC下的SSH工具的推荐及SSH如何连接本地的小教程
- 亚马逊kindle设置_索尼阅读器和亚马逊Kindle-这次会发生电子书吗?
- 旺店通·企业奇门与金蝶云星空对接集成查询采购入库单连通采购入库新增(采购入库单 all)