读FileSaver.js
项目地址:https://github.com/eligrey/FileSaver.js
// The one and only way of getting global scope in all environments // https://stackoverflow.com/q/3277182/1008999 var _global = typeof window === 'object' && window.window === window ? window : typeof self === 'object' && self.self === self ? self : typeof global === 'object' && global.global === global ? global : this
多个三元运算符怎么看?
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。js多个三元运算符嵌套时运算优先级是从右往左的,另外加号优先级大于三元运算。
// 等同于 true ? 'true' : ( false ? 't' : 'f' ) true ? 'true' : false ? 't' : 'f' // 等同于 "当前费用false" ? "$2.00" : "$10.00") var isMember = false; console.log("当前费用" + isMember ? "$2.00" : "$10.00"); //返回$2.00 // 示例来源:https://www.cnblogs.com/sxz2008/p/6432290.html
如何在所有环境里获取全局作用域?
这篇文章讲的很清楚,这也是为什么要写这么个方法拿全局作用域的原因
ES5 的顶层对象,本身也是一个问题,因为它在各种实现里面是不统一的。
- 浏览器里面,顶层对象是
window
,但 Node 和 Web Worker 没有window
。 - 浏览器和 Web Worker 里面,
self
也指向顶层对象,但是 Node 没有self
。 - Node 里面,顶层对象是
global
,但其他环境都不支持。
同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用this
变量,但是有局限性。
- 全局环境中,
this
会返回顶层对象。但是,Node 模块和 ES6 模块中,this
返回的是当前模块。 - 函数里面的
this
,如果函数不是作为对象的方法运行,而是单纯作为函数运行,this
会指向顶层对象。但是,严格模式下,这时this
会返回undefined
。 - 不管是严格模式,还是普通模式,
new Function('return this')()
,总是会返回全局对象。但是,如果浏览器用了CSP(Content Security Policy,内容安全政策),那么eval
、new Function
这些方法都可能无法使用。
综上所述,很难找到一种方法,可以在所有情况下,都取到顶层对象。
BOM 是什么
JavaScript fromCharCode() 方法

更多精彩