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

JavaScript 常见问题集锦

1.假设val已经声明,可定义为任何值。则下面js代码有可能输出的结果为:

解释: 加号优先级高于 三目运算, 低于括号。 所以括号中无论真假 加上前边的字符串都为 true, 三目运算为true是 输出 define, 本题考查三目运算符的应用,运算符优先级,+>?:,前面’’value is’’是误导的,实际是整个表达式作为判断依据,因为’’value is ‘’+val是字符串,且肯定不为空,在javascript中非空字符串为true,所以输出defined

2. 以下代码输出结果为:

解释: 在 JS 里,声明函数只有 2 种方法:

第 1 种: function foo(){…} (函数声明);

第 2 种: var foo = function(){…} (等号后面必须是匿名函数,这句实质是函数表达式);

除此之外,类似于 var foo = function bar(){…} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。

但为什么不是 “undefined”? 这里如果求 typeof g,会返回 undefined,但求的是 g(),所以会去先去调用函数 g,这里就会直接抛出异常,所以是 Error。

3.写出下面代码的运行结果

解析: var a=b=3 时a是局部变量,而b是全局变量;这段代码其实等价于:

4. 写出以下代码的运行结果:

解析:

instanceof运算符希望左操作数是一个对象,右操作数表示对象的类(初始化对象的构造函数)。如果左侧的对象是右侧对象的实例,返回true,否则返回false。

例如:计算o instanceof f

首先计算f.prototype,然后在原型链中查找o,找到返回true

===严格相等运算符:首先计算其操作数的值,然后比较这两个值,比较过程中没有任何类型转换

==相等运算符:如果两个操作数不是同一类型,那么会尝试进行一些类型转换,然后进行比较

尽管null和undefined是不同的,但它们都表示“值的空缺”,两者往往可以互换,因此==运算符认为两者是相等的

NaN表示非数字值,特殊之处:它和任何值都不相等,包括自身。判断NaN的方法: x!=x 返回 true

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180228G06IFK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券