在Chrome Dev Console中测试了一些js代码,我有点困惑.
我知道在严格模式下,当引用此关键字时,不是对象方法的函数应该接收undefined而不是global对象.
function test(){
"use strict";
return this===undefined;}
test();
Run Code Online (Sandbox Code Playgroud)
输出错误.
"use strict";
function test(){
return this===undefined;}
test();
Run Code Online (Sandbox Code Playgroud)
还是假的.
(function test(){
"use strict";
return this===undefined;}());
Run Code Online (Sandbox Code Playgroud)
输出为真.
只是想澄清一下.ʕ•ᴥ•ʔ我是js的新手.
玩golang并且不明白为什么我不能在userGroup struct中更改用户的电子邮件.
package main
import "fmt"
type user struct {
name, email string
}
func (u *user) changeEmail(newEmail string) {
u.email = newEmail
}
type userGroup struct {
users map[int]user
}
func (ug *userGroup) mapOverUsers(fn func(u *user)) {
usersLen := len(ug.users)
for i := 0; i < usersLen; i++ {
usr := ug.users[i]
fn(&usr)
}
}
func main() {
ug := userGroup{
map[int]user{0: {"0", "ZZZ"}, 1: {"1", "ZZZ"}, 2: {"2", "ZZZ"}}}
fmt.Println(ug)
// should be same as (&ug).mapOverUsers
ug.mapOverUsers(func(u *user) …Run Code Online (Sandbox Code Playgroud)