JavaScript

JavaScript是ECMAScript的一种实现方式之一,轻量级的脚本语言,本身不提供I/O(输入/输出)相关的API,host提供。

一:语法

  1. 变量: 变量是对"值"的具名引用,变量名区分大小写. 声明变量的六种方法:var function let const import class

       变量提升:JavaScript引擎的工作方式,先解析代码,获取所有被声明的变量,然后再一行行地运行.所有的变量声明语句会被放在代码的头部.let声明变量:不存在变量提升(先声明后使用),存在块级作用域.存在"暂时性死区"(在let/const未声明前,使用则报错.),暂时性死区的本质是执行当当前作用域,在等到变量声明那一行出现,在获取和使用该变量.不允许重复声明.const声明常量,声明之后不可改变,存在块级作用域,存在"暂时性死区",保证了内存地址存在的数据不可改变,指针永远执行它.
  2. 标识符: 变量名,函数名等.命名规则,首字母可以是字母或$或_,余下字符:除了Unicode字母,美元符号和下划线,还可以用数字0-9 使用驼峰命名法.
  3. 保留字:不能作为标识符使用

    agargument,break,case,catch,class,const,continue,debugger,
    default,delete,do,else,enum,eval,export,extends,flase,finally,for,function,if,implements,
    import,in,instanceof,interface,let,new,null,package,private,
    protected,public,return,static,super,switch,this,throw,true,try,typeof,var,void,while,with,yield.
  4. 注释: 一种单行注释:用//开头. 多行注释: //之间. <!---->
  5. 语句: if结构 if..else结构 switch结构 三元运算符?: while循环 for循环 do...while循环 break语句和continue语句 lable标签if语句,if-else语句,switch语句,注意switch语句后面的表达式,与case语句后面的表达式比较运算结果时,采用的是严格相等运算符(===),而不是相等运算符(==),即不会发生类型转换.

数据类型

JavaScript的数据类型共有七种:number (数字).string(字符串),boolean(布尔型),undefined(未定义),null(空),object(对象),
Symbol(符合).
原始类型:数值/字符串/布尔值. 特殊值:null/undefined.
合成类型:object,存放许多值的容器.对象细分为:狭义的对象,数组,函数.
判断一个值的类型: typeof运算符, instanceof运算符 object.prototype.toString运算符
历史遗留,typeof null 会返回object instanceof可以区分array和object

null和undefined: null是一个表示"空"的对象,转为数值时为0,undefined是一个表示"此处无定义"的原始值,转为数值为NaN.
null:好比待补球员. undefined: 当变量声明了,但没有赋值,调用函数时,该提供的参数没有提供,该参数等于undefined.对象没有赋值的属性,函数没有返回值时,默认返回undefined.

Bollean:真true,假false.以下运算符返回布尔值,前置逻辑运算符! ,相等运算符 === !== == != 比较运算符 > >= < <=
以下六个值被转为false(undefined,null,false,0 NaN, ""或'),其他值都视为true,空数组{}和空对象对应的布尔值都是true.

number: 在JavaScript内部,所有的数字都是小数(64位浮点数),对于某些运算需要整数,会自动把64位数浮点数转换为32位整数,再进行运算. Js中最大数值为2的1024次方,超出则Infinity. Js中最小值为2的-1075次方,超出则0.
数值的进制:十进制,十六进制(0x或0X),八进制(0o或0O),二进制(0B或0b).历史遗留,0888会被看做八进制.

   特殊数值:正零和负零,Js内部的2个0,一个是+0,-0,区别是64位浮点数表示法的符号位不同,它们为等价的。NaN是JavaScript的特殊值,数据类型依然属于Number,表示“非数字”,主要出现在将字符串解析成数字出错的场合。NaN不等于任何值,包括它本身。Infinity.表示“无穷”。

string:字符串'abc'或"abc", 要在''里面使用单引号加反斜杠,用来转义。 length属性返回字符串长度。
object:object是JavaScript语言的核心概念,对象是一组"键值对(key-value)"的集合,属性的读取与赋值(.运算符和[]运算符)
查看一个对象本身的所有属性,可以使用object.keys方法. 属性的删除,只能删除对象本身的属性 delete Objectname.value;
属性是否存在 in运算符 'value' in Objectname; 属性的遍历 for..in循环,用来遍历一个对象的全部属性,不仅遍历对象自身的属性,还遍历继承的属性。

function:函数是一段可以反复调用的代码块,是处理数据的方法,是JavaScript的第一等公民。函数还能接受输入的参数,不同参数返回不同值。
如果同一个函数被多次声明,后面的声明就会覆盖前面的声明.
声明函数的方法:function 函数表达式 Function构造函数
array: 数组是方括号里面按次序排列的一组值。可以先定义后赋值,可以放入任何数据类型。
<script>

(1)function命令
function print(s) {  //function命令后面就是函数名,函数名后面一组圆括号,里面是传入的参数,函数体放入大括号里面。console.log(s);
}
(2)函数表达式
let  print = function(s) {  //表达式的function命令之后,如要加函数名,则只会在函数体内部有效,在函数体外部无效.console.log(s);
};
(3)Function构造函数
let  add = new Function ('x','y','return x + y');

</script>

运算符

处理数据的基本方法,从现有的值得到新的值.
算术运算符,比较运算符,布尔运算符,二进制运算符,其他运算符,运算顺序.
算术运算符:加法运算符(+),减法运算符(-),乘法运算符(),除法运算符(/),指数运算符(*)余数运算符(%),自增运算符(++x/++x),

自减运算符(--x/x--),数值运算符(+),负数值运算符(-x)
加法运算符允许非数值的相加.

比较运算符: >(大于运算符) <(小于运算符) <=(小于或等于运算符) >=(大于或等于运算符) ==(相等运算符) ==(严格运算符) !=(不相等运算符)
!==(严格不相等运算符)
布尔运算符:!(取反运算符) &&(且运算符) ||(或运算符) ?:(三元运算符) ·以下运算符(undefined,null,false,0,NaN,'')取反为true.
二进制位运算符:
其他运算符,运算顺序:
void运算符,执行一个表达式,如何不返回任何值.或者返货undefined.
逗号运算符,用于对两个表达式求职,并返回后一个表达式的值.

专题一:数据类型的转换

Number(),解析为数值,不可解析与undefined则NaN,空字符串与null则为0,true转为1.false转为0.
String(),解析为字符串。
Boolean(),转为布尔值,以下五个值(undefined,null,-0或+0,NaN,''(空字符串))的转换结果为false,其他的值为true.

专题二: 执行上下文与内存空间

在JavaScript中,所有数据保存在堆(heap)里面,执行上下文的的执行顺序借用栈数据结构的存取方式.栈是先进先出(FIFO),而JavaScript具有垃圾回收机制,通过标记清除算法清除不再使用的对象.
一个页面开始加载JS就进入全局环境,每段函数的加载,进入函数环境(又称为执行上下文).执行上下文分为两个阶段:创建阶段:(创建变量对象,建立作用域链,确定this指向)+代码执行阶段(变量赋值,函数引用,执行额外代码)

专题三: 原型与原型链

原型:所有对象都有它.
构造函数:可以通过new创建一个对象.
实例:通过构造函数和new创建的对象就是实例,实例通过_proto_指向原型,通过constructor指向构造函数.
原型链: _proto_将对象连接成原型链,实现继承与共享属性的对象链.

//实例
const instance = new Object()
//实例为instance 构造函数是Object

参考

(1)网道-互联网开发文档(https://wangdoc.com/).
(2)ECMAScript 6 入门 (http://es6.ruanyifeng.com/).

前端_JavaScript_语法篇相关推荐

  1. ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...

    JS中的数据类型 (一).基本数据类型(值类型) 1.number:数字 -12.12.5.-12.5 0这些数字都是number: js中增加了一个number类型的数据:'NaN' typeof ...

  2. 前端工具--less篇

    前端工具–less篇 less 中文网http://www.bootcss.com/p/lesscss/ 常见错误及解决: sublime text 3 安装less2css保存less出现错误 未安 ...

  3. Flex 布局教程:语法篇

    阮一峰的网络日志 » 首页 » 档案 上一篇:ES6 的功能侦测库 下一篇:Flex 布局教程:实 分类: 开发者手册 Flex 布局教程:语法篇 作者: 阮一峰 日期: 2015年7月10日 网页布 ...

  4. web前端研发工具篇

    web前端研发工具篇 一.常见前端开发IDE 1.Visual Studio Code 2.hbuilder 3.sublime text3 4.WebStorm 5.Atom 6.Dreamweav ...

  5. Xamarin XAML语言教程基础语法篇大学霸

    Xamarin XAML语言教程基础语法篇大学霸 前  言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框 ...

  6. 前端总结·基础篇·CSS(二)视觉

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  7. vue引用自定义.js文件 (常量抛出 + 地址三级联动为例)- 语法篇

    文章目录 vue如何引用`自定义封装的` `.js`文件? `如何操作,详细如下.`(注意代码注释部分:注意1/2/3/4/5) 一.效果图预览: 二.以自定义`area.min.js`文件为例: 三 ...

  8. vue引用自定义.css文件 - 语法篇

    vue如何引用外部自定义的.css文件 ? 一般都会因为存在权重或优先级设置的问题才会侧意引用: [详情进入查看:如何在scoped不污染组件样式的前提下,实现el-input组件样式覆盖?] 再者, ...

  9. mysql select high_priority_MySQL进阶SELECT语法篇

    MySQL进阶SELECT语法篇 2019-09-29 编程之家收集整理的这篇文章主要介绍了MySQL进阶SELECT语法篇,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. MysqL中 ...

最新文章

  1. 怎么把json数据转化为数组_RESTful API 返回统一JSON数据格式是怎么实现的?
  2. 一次关于 Mysql 索引优化的思考
  3. 6、ShardingSphere 之 读写分离
  4. POJ3614Sunscreen(优先队列+贪心)
  5. 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)...
  6. Exchange 2016 批量添加X500地址,解决迁移后退信的问题
  7. dataframe 添加一行_R语言Data Frame数据框常用操作
  8. 关闭tomcat8080端口
  9. VMware 虚拟机运行卡慢的解决办法
  10. 一步之遥 c语言答案是多少,蓝桥杯之一步之遥-Go语言中文社区
  11. halcon 深度学习英伟达显卡部署
  12. 脚本 - EXCEL
  13. android应用更换背景图片方法
  14. 群联MPALL v3.23.00量产工具(可刷PS2251-50固件)
  15. 新闻管理系统数据库设计
  16. FPGA开发——SRIO
  17. 塞规公差带图_塞规公差计算表
  18. TCP协议和UDP协议头部结构
  19. 桌面Ubuntu卡死解决方案
  20. 从0开始学AI-DAY0-写在前面

热门文章

  1. 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数
  2. k8s相关面试问题_最常被问到的20道Kubernetes面试题
  3. 工作中遇到的问题——2018年
  4. MySQL的DDL、DML、DCL、TCL什么意思?
  5. 剑指offer面试题[19]-二叉树的镜像
  6. 资深和新手的100大 Selenium面试问答
  7. tracepro应用实例详解_十大行业气动设备 120个典型气动系统应用实例
  8. ios逆向和java_逆向,安卓简单还是IOS简单?
  9. 小宝机器人的储存容量_扫地机器人和吸尘器哪个更实用?
  10. vcglib中面自相交的检测算法