JavaScript之三 - 语法
1、block
一般就是{}包括起来的代码块,注意的是,js没有块作用域,但是有函数作用域,全局作用域。
2、var
1 |
var a = b = 1; |
如:
1 |
function () {
|
3、try catch
1 |
try {
|
4、function
function fd() { // do something }; // 函数声明
var fe = function { // do something }; // 函数表达式
区别:函数声明可以在声明前调用,且无报错;而函数表达式不可以在声明前调用,有TypeError
5、for…in
1 |
var p; |
有几点需要注意:
- 顺序不确定
- enumerable为false时不显示
- for…in 对象属性受到原型链的影响
6、严格模式
严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,并增强安全性
1 |
// 1. |
严格模式:
- 不允许使用with(SyntaxError);
- 不允许给未声明的变量赋值(RefrenceError);
- arguments变为参数的静态变量;
1 |
// 正常状态下 |
- 严格模式下删除形参会报错(1.configurable为true则报SyntaxError;2.configurable为false则报TypeError);
- 对象字面量属性重复报错。
var obj = {x:1, x:2}; // SyntaxError - 禁止八进制字面量
console.log(0123); //SyntaxError - eval, arguments变为关键字,不能作为变量、函数名,若违反则报SyntaxError
- eval独立作用域
1 |
!function() {
|
严格模式总结:
- 不允许使用with;
- 所有变量必须声明,赋值给未声明的变量报错,而不是隐式创建全局变量;
- eval中的代码不能创建eval所在的作用域变量、函数,而是为eval单独创建一个单独的作用域,并在eval返回时废弃;
- 函数中的特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改形参会相互影响;
- 删除configurable为false会报错,而不是选择忽略;
- 禁止八进制字面量;
- eval、arguments为关键字,不能作为变量名或函数名;
- 一般函数的调用(不是对象方法的调用,也不是用apply/call/bind等修改this指向),this指向null而不是全局对象;
- 若使用apply/call,当传入null或者undefined时,this指向null或undefined而不是全局对象;
- 试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略;
- arguments.caller、arguments.callee被禁用
JavaScript之三 - 语法的更多相关文章
- JavaScript基本语法(一)
前段时间学习了HTML和CSS,也实战了一些结构较简单的项目.在还没运用到JS的知识时,做出来的效果总觉得少了些什么.虽然总体布局与一些基本的特效,也能用HTML+CSS就能完成.但如今开始进入Jav ...
- javascript运算符语法概述
× 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...
- javascript基础语法——表达式
× 目录 [1]原始表达式 [2]复杂表达式 前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascr ...
- javascript基础语法——词法结构
× 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...
- JavaScript的语法规则
JavaScript的语法规则 JavaScript区分大小写 JavaScript脚本程序须嵌入在HTML文件中 JavaScript脚本程序中不能包含HTML标记代码 每行写一条脚本语句 语句末尾 ...
- JavaScript的语法要点 1 - Lexically Scoped Language
作为从一开始接触C.C++.C#的程序员而言,JavaScript的语法对我来说有些古怪,通过最近一年的接触,对它有了一定的了解,于是想把它的一些语法要点记录下来. 1. Block Scope vs ...
- javascript的语法作用域你真的懂了吗
原文:javascript的语法作用域你真的懂了吗 有段时间没有更新了,思绪一下子有点转不过来.正应了一句古话“一天不读书,无人看得出:一周不读书,开始会爆粗:一月不读书,智商输给猪.”.再加上周五晚 ...
- 【repost】JavaScript 基本语法
JavaScript 基本语法,JavaScript 引用类型, JavaScript 面向对象程序设计.函数表达式和异步编程 三篇笔记是对<JavaScript 高级程序设计>和 < ...
- JavaScript 中语法规范及调试
JavaScript 中语法规范及调试 版权声明:未经博主授权,内容严禁分享转载 JavaScript 开发环境 JavaScript 脚本可以使用任意一款纯文本编辑器进行编程开发. 常见的前端开发编 ...
随机推荐
- A brief introduction to complex analysis
\(\underline{Def:}\)A func \(U(\subset \mathbb{C}) \stackrel{f}\longrightarrow \mathbb{C}\)is (compl ...
- inotify+rsync实时同步
主服务器上安装inotify和rsync,备用服务器上安装rsync 主服务器上修改/etc/rsyncd.conf配置文件 三. 创建密码文件,防火墙设置,客户端和服务器端都要做如下操作 echo ...
- 关于css中hover下拉框的一个bug
写hover下拉框的时候会遇到一个奇怪的bug,就是下拉框下来的时候会被所在位置的div遮挡,哪怕下拉框使用的absolute,也会被遮挡. 如图: 这个语言选择的下拉框会被下面的div挡住(截图是已 ...
- windows下使用apache相关资料汇总
1.Apache httpd.conf配置详解 https://www.cnblogs.com/langren1992/p/5160912.html 2.windows下使用apache经验总结 ht ...
- COMET探索系列二【Ajax轮询复用模型】
写在前面:Ajax轮询相信大家都信手拈来在用,可是有这么一个问题,如果一个网站中同时有好多个地方需要用到这种轮询呢?就拿我们网站来说,有一个未读消息数提醒.还有一个时实时加载最新说说.昨天又加了一个全 ...
- Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080
解决办法: 两个方案:1.注册处理函数时,用如下方式,明确声明为不是被动的window.addEventListener('touchmove', func, { passive: false }) ...
- Python--继承、封装、多态
大概每个人在学生时代开始就使用Java了,我们一直在学习Java,但Java中总有一些概念含混不清,不论是对初级还是高级程序员都是如此.所以,这篇文章的目的就是弄清楚这些概念. 读完本文你会对这些概念 ...
- discount the possibility|pessimistic|bankrupt|
Nor can we discount the possibility that some factor in the diet itself has harmful effects. ADJ-GRA ...
- python模块之shelve,xml,hashlib,configpaser
shelve shelve模块也是一种可以将数据序列化的模块 使用方法 1. open 2. 读写 3. close 特点:使用方法比较简单 提供一个文件名字就可以开始读写,读写的方法和字典一致;跨平 ...
- 如何用Nginx解决跨域问题
一. 产生跨域的原因 1.浏览器限制 2.跨域 3.XHR(XMLHttpRequest)请求 二. 解决思路 解决跨域有多重,在这里主要讲用nginx解决跨域 1.JSONP 2.nginx代理 3 ...