首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

12种不宜使用Javascript语法

3. eval eval用来直接执行一个字符串,因为它有性能和安全性问题,并且使得代码更难阅读,因此应避免使用,直接将字符串写在代码行即可。...9. function语句 在Javascript定义一个函数,有两种写法: function foo() { } 和 var foo = function () { } 两种写法完全等价。...11. new语句 Javascript是世界上第一个被大量使用支持Lambda函数语言,本质上属于与Lisp同类函数式编程语言。但是当前世界,90%以上程序员都是使用面向对象编程。...myCat = new Cat('mimi'); 这种利用函数生成类、利用new生成对象语法,其实非常奇怪,一点都不符合直觉。...但是在Javascript,void是一个运算符,接受一个运算数,并返回undefined。 void 0; // undefined 这个命令没什么用,而且很令人困惑,建议避免使用。

48850

12种不宜使用Javascript语法

3. eval eval用来直接执行一个字符串。这条语句也是不应该使用,因为它有性能和安全性问题,并且使得代码更难阅读。 eval能够做到事情,不用它也能做到。...9. function语句 在Javascript定义一个函数,有两种写法:   function foo() { } 和   var foo = function () { } 两种写法完全等价。...11. new语句 Javascript是世界上第一个被大量使用支持Lambda函数语言,本质上属于与Lisp同类函数式编程语言。但是当前世界,90%以上程序员都是使用面向对象编程。...  var myCat = new Cat('mimi'); 这种利用函数生成类、利用new生成对象语法,其实非常奇怪,一点都不符合直觉。...但是在Javascript,void是一个运算符,接受一个运算数,并返回undefined。   void 0; // undefined 这个命令没什么用,而且很令人困惑,建议避免使用。 (完)

64091
您找到你想要的搜索结果了吗?
是的
没有找到

javascript delete

最后,在内置 eval 函数文本被解析为 Eval code....Safari 2.x 甚至有更多问题 —— 删除非引用(例如delete 1;)将会抛出错误; function 声明会创建 可删除 properties (但奇怪是,variable 声明就不能删除...看看误解彼此反弹也是有趣,在同一 thread 中有人首先建议删除变量(当然是行不通,除非是在 eval 声明),然后另一个人提供了 一份错误修正 可以如何在全局代码删除变量而不是Function...Safari 2.x 甚至有更多问题 —— 删除非引用(例如delete 1;)将会抛出错误; function 声明会创建 可删除 properties (但奇怪是,variable 声明就不能删除...看看误解彼此反弹也是有趣,在同一 thread 中有人首先建议删除变量(当然是行不通,除非是在 eval 声明),然后另一个人提供了 一份错误修正 可以如何在全局代码删除变量而不是Function

3K80

解释器模式举例-柯里化前生今世(四):编译器与解释器

关于   本文是系列文章第四篇,发布在业余程序员个人修养这个专栏: 柯里化前生今世(一):函数面面观   柯里化前生今世(二):括号神教   柯里化前生今世(三):语言和同像性   ...格林斯潘第十定律:   任何C或程序复杂到一定程度之后,都会包含一个临时开发、不合规范、充满程序错误、运行速度很慢、只有一半功能Common Lisp实现。   ...,eval-lambda) (,is-function-call-list?...,eval-function-call-list))))   和其他解释器教材不同是,我没有写那么多if-else,   而是把决策模式提取出来了,这样会更清晰一些。   ...eval-exp会根据exp具体形式,寻找相应处理方式,   而各个处理方式,还有可能再用到eval-exp来处理子表达式。   因此,这是一个递归执行过程。

27110

Lisp 学习资源集锦

/lib/list/294 segmentfault:https://segmentfault.com/t/lisp common-lisp:https://common-lisp.net/ 一个国外教程网...2)《ANSI Common LISP》Paul大神作品,他《黑客与画家》是必读经典,会改变三观说。...4)《Practical Common Lisp》大神田春翻译中文版《实用Common Lisp编程》已经出版。 5)《On Lisp》也是Paul大神作品,好像是进阶修炼版本。...8)《Artificial Intelligence :A Modern Approach》《人工智能:一种现代方法》看了个开头,从人工智能在各个学科基础开始,一开始就来列人名了,哲学,数学,心理学...很有意思 9)《Common Lisp:The language》,堪比C++ Primer长度,1100多页,大神说犹如高峰,待攀。

1.7K30

深入浅出 Babel 下篇:既生 Plugin 何生 Macros

这种数据即程序、程序即数据概念,使得Lisp可以轻松地自定义宏. 不妨来看一下Lisp定义宏示例: ; 使用defmacro定义一个nonsense宏, 接收一个function-name参数....,这里有一个Javascript实现 注意:宏一般在编译阶段被展开, 下面代码只是为了协作你理解上述Lisp代码 function nonsense(name) { let rtn eval...因为它专注于具体 AST 节点,见下文 另外,当配置出错时,Macro可以得到更好错误提示 有利有弊,Babel Macro 肯定也有些缺陷,例如相对于插件来说只能显式转换,这样代码可能会比较啰嗦,...例如: import evalm from 'eval.macro' const x = evalm` function fib(n) { const SQRT_FIVE = Math.sqrt(5...: true, value: 10 } t.evaluate(parse("!

1.5K31

Lisp语言简介_c++是什么语言

LISP有很多种方言,各个实现语言不完全一样。1980年代Guy L. Steele编写了Common Lisp试图进行标准化,这个标准被大多数解释器和编译器所接受。...在Unix/Linux系统,还有一种和Emacs一起Emacs Lisp(而Emacs正是用Lisp作为扩展语言进行功能扩展)非常流行,并建立了自己标准。...LISP语言主要现代版本包括Common Lisp和Scheme。 基本介绍 LISP 是第一個函數型程式語言,区别于C/Java等命令型编程语言。...在 Lisp 我们习惯用原子 t 表示真,而用空表 () 表示假。...反之一个被引用表仅仅被视为表 > (atom ‘(atom ‘a))() 引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了 Lisp 最为与众不同特点——代码和数据使用相同结构来表示

2.2K20

严格模式 – JavaScript

eval 代码,Function 代码,事件处理属性,传入 setTimeout方法字符串和包含整个脚本开启严格模式会如预期一样工作。...当然也可以在代码显式开启严格模式, 但这样做并不是必须. function strict1(str){ “use strict”; return eval(str); // str代码在严格模式下运行...语法错误 eval(“var y; delete y;”); // !!! 语法错误eval和arguments变简单 严格模式让arguments和eval少了一些奇怪行为。...两者在通常代码中都包含了很多奇怪行为: eval会添加删除绑定,改变绑定好值,还会通过用它索引过属性给形参取别名方式修改形参....语法错误 f2(); } function baz() { // 合法 function eit() { } // 同样合法 } 这种禁止放到严格模式并不是很合适,因为这样函数声明方式从

98430

一个粗心Bug,JSON格式不规范导致AJAX错误

一、事件回放 今天工作时碰到了一个奇怪问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里。...打开浏览器Network,排查,发现了一个奇怪现象 在preview里面看数据 ? 我那句 success: true 怎么会变成 undefined: true。这是什么鬼。。。...(result) { success(eval('(' + result + ')')); // 使用eval解析了一下 }, error: function...在jQueryapi网站上看到了这么一句话 在 jQuery 1.4 ,JSON 格式数据以严格方式解析,如果格式有错误,jQuery都会被拒绝并抛出一个解析错误异常。...也就是说 { "success": undefined } 这么一个JSON,是错误。 3、对于number类型,表示方法如下 ? 用科学计数法时候会牵涉到。

1.5K40

一名ClojurianEmacs配置

这就不得不提起Clojure这门lisp方言,出于对lisp和函数式编程痴迷,我选择了基于JVMClojure作为自己偏好语言,而emacs天生为lisp而生。..."http://melpa.org/packages/")点号(dot)表示法也比较奇怪,其实这是lispDotted pair表示法,用法和普通列表类似,但因为是pair缘故,你可以使用(...模块化 如果把什么东西都揉到init.el文件,这个文件一定会很快变得臃肿不堪。为了解决这个问题,需要引入模块化思想——把特定功能配置放到独立文件,然后require进来。...(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) 看似,接下来就可以在每个独立模块文件编写各种功能配置...当你正在编译文件时候,包宏就会原地展开,然后被eval-when-compile宏加载进内存并被编译成字节码,供后续解析器执行。

2.7K20

delete奇怪行为

如getComputedStyle()) 深度遍历 当然,直接添一个getValue()也能达到想要效果,但getter对使用方更友好,外部完全不知道值是提前算好还是现算 delete奇怪行为分为...至于evalX能被删掉原因,就比较有意思了,需要了解几个东西:执行环境、变量对象/活动对象、eval环境特殊性 执行环境 执行环境分为3种:Global环境(比如script标签圈起来环境)、Function...) P.S.变量对象与活动对象这种“玄幻”东西没必要太较真,各是什么有什么关系都不重要,理解其作用就好 eval环境特殊性 eval执行环境声明属性和函数将作为调用环境(也就是上一层执行环境)变量对象属性存在...此外,还有一个有意思尝试,既然eval直接拿外层变量对象,而且eval环境声明东西没有不能删天赋,那么二者起来,是不是能够覆盖强删?...var x = 1;/* Can't delete, `x` has DontDelete */delete x; // false typeof x; // "number"eval('function

2.3K30

JavaScript糟粕部分

false == 0 # true false == undefined # false false == null # false null == undefined # true '\t\r\...Function 构造器是eval另一种形式,同样也应该避免使用它。 浏览器提供setTimeout和setInterval函数,他们能够接受字符串参数或函数参数。...单行语句形式是另一种带刺玫瑰。它带来好处是可以节省两个字节,但这是不是一个好处值得商榷。它模糊了程序结构,使得在随后操作代码可能容易插入错误。...一个语句不能以一个函数表达式开头,因为官方语法假定以单词function开头语句是一个function语句。解决方法就是把函数调用括在一个圆括号。...而在JavaScript,void是一个运算符,它接受一个运算数并且返回undefined

45410
领券