Chp*_*t.X 10 debugging clojurescript
我想用ClojureScript实现一个函数来简化js/console.log
如下:
(defn log [& args]
(apply js/console.log args))
Run Code Online (Sandbox Code Playgroud)
叫它:(log "foo" "bar")
抛出: TypeError: Illegal invocation
但这有效: (js/console.log "foo" "bar")
问题是什么 ?
Joa*_*uin 12
js/something
是用于访问js对象,但在此之后你不应该嵌套点,因为它不是与clojure兼容的语法,它将被删除.在旧版本的编译器(2138)中,您的代码可以正常工作,但有可能在较新版本的编译器中不推荐使用它.你使用的是哪个版本?
正确的方法是使用这样简单的js互操作:[警告:请参阅下面的评论,来自David Nolen,ClojureScript首席开发人员]
(defn log [& args] (apply (.-log js/console) args))
Run Code Online (Sandbox Code Playgroud)
甚至更短,因为console.log已经是variadic(只是做一个别名):
(def log (.-log js/console))
Run Code Online (Sandbox Code Playgroud)
如果您首先将它放在文件的顶部,也可以使用println :( enable-console-print!).
并且pprint已被移植:
:require [cljs.pprint :refer [pprint]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7195 次 |
最近记录: |