首页 > 编程语言 >javascript - 练习题(若干)

javascript - 练习题(若干)

时间:2022-11-02 23:31:55浏览次数:45  
标签:练习题 function return log 10 javascript arguments foo 若干

慢慢收集一些习题、考题


练习1

问:X,Y,Z分别是多少?

var x = 1, y=z=0;
function add(n){
return n = n+1;
}
y = add(x);
function add(n){
return n = n+3;
}
z = add(x);

console.log(x); // 1
console.log(y); // 4
console.log(z); // 4

分析:考预编译的

变量提升、函数提升,同名函数覆盖;只会执行后一个函数  n = n+3 ;


练习2

问:哪些结果能输出 12345

function foo(){
bar.apply(null,arguments);
}
function bar(){
console.log(arguments);
}
foo(1,2,3,4,5); // [1,2,3,4,5]

分析:理解 apply 

apply 第一个参数改变 this 指向,这里面也没有 this ,所以 null 是什么也不做。 第二个参数把5个参数传进去。所以 foo 相当于直接执行 bar ,所以 arguments 就是结果: 12345.

(function foo(x){
console.log(arguments);
return x
})(1,2,3,4,5) // [1,2,3,4,5]

分析:理解立即执行函数

立即执行的标准写法,参数传入,输出 arguments ,还返回这些参数。

function foo(x){
console.log(arguments);
return x;
}
foo(1,2,3,4,5); // [1,2,3,4,5]

分析:函数标准调用,直接输出 arguments

function foo(x){
console.log(arguments);
return x;
}(1,2,3,4,5)

分析:函数不能执行,也不会报错,(1,2,3,4,5)当表达式处理了。


练习3

问:以下表达式结果

parseInt(3,8);   // 3
parseInt(3,2); // NaN
parseInt(3,0); // 3 或 NaN

分析:parseInt 第二个参数,二进制和八进制。

parseInt(3,8);  把3看成是八进制里的3, 输出还是3;

parseInt(3,2);  把3看成是二进制里的3,二进制里没有3,NaN;

parseInt(3,0);  没有0进制,一般浏览器会当十进制输出,即3;也有浏览器输出 NaN;

二进制: 0,1; 二进制里的2用 10表示;

八进制:0,1,2,3,4,5,6,7;八进制里的8用10表示;

十六进制: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f; 十六进制里的16用10表示;


练习4

问:以下哪些是typeof可有返回的结果

string      //  可以
array
object // 可以
null

分析: typeof 返回结果有哪些?

7 种。分别为: string、boolean、number、Object、Function、undefined、symbol(ES6)


练习5

问:alert 的结果?

function b(x,y,a){
arguments[2] = 10;
alert(a); // 10
}
b(1,2,3);

分析:arguments 和 实参的映射关系,实参传进去,a = 3 , 先定义了 arguments[2] =10 那就等于改变了 a 的值。 所以输出 10 。

function b(x,y,a){
a = 10;
alert(arguments[2]); // 10
}
b(1,2,3);

分析:实参、形参和 arguments 是映射关系,你变我也变;除非没对应上; 所以输出 10; 

注意,形参和arguments虽是映射关系,但不是一个人;


练习6

问:输出结果

var f=(
function f(){
return "1";
},
function g(){
return 2;
}
)();
typeof f; // number

分析:“,” 逗号操作符; (1,2) 的结果就是返回2。但要用括号括起来。那么返回结果相当于是:

var f=(
function g(){
return 2;
}
)();

这又变成立即执行函数了,返回2,所以 f = 2;  typeof f 输出  number; 


练习7

问:执行结果

var x = 1;
fi(function f(){}){
x+= typeof f;
}
console.log(x); // 1undefined

分析:(function f()) 的特性是变成表达式后就执行了,执行后失去引用,就找不到了。

typeof f 的结果就变成: undefiend 了。typeof 输出的结果都是字符串类型;那么 1 + 'undefined 

' 就是 1undefined 


练习8

问:表达式结果为true的是:

undefined == null    // true
undefined === null // false
isNaN("100") // fasle
parseInt("1a") == 1; // true

分析,undefined 和 null 很特殊,有些只有硬记,看后面图。

isNaN(), 函数里面的数是要经过 Number() 隐式转换后再判断是不是“非数”的。 Number("100") = 100,数值类型的,所以 isNaN(100) == false。 

parseInt("1a")  是把字符串中的有效数字提出,转换成数值型。结果是 1 。

看下控制台:

javascript - 练习题(若干)_typeof

标签:练习题,function,return,log,10,javascript,arguments,foo,若干
From: https://blog.51cto.com/ahuiok/5818460

相关文章

  • 【笔记14】Javascript - 继承
    【笔记14】Javascript-继承继承的概念不陌生,在原型、原型链那里,就知道一个对象能继承到原型很多属性和方法。各种继承的方法有优势有不足,看下继承发展史:继承传统形式:原型......
  • JavaScript中的Object.keys的详解和用法
    目的:在实际开发中,我们有时需要知道对象的所有属性。解决办法:ES5引入了Object.keys方法,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。参考:https://......
  • Javascript 异常处理的一些经验
      写在前面 为了提升应用稳定性,我们对前端项目开展了脚本异常治理的工作,对生产上报的jserror进行了整体排查,试图通过降低脚本异常的发生频次来提升相关告警的准确......
  • Javascript进阶笔记 - BOM
    6.BOM目录6.BOM1.BOM简介2.History3.Location4.定时器1.BOM简介BOM是指游览器对象模型,BOM提供了一组对象,方便用户通过JS操作游览器BOM对象Window代表......
  • Javascript进阶笔记 - 事件
    事件目录事件1.事件相关概念2.文档的加载3.事件的冒泡4.事件的委派5.事件监听绑定1.事件相关概念事件是电脑输入设备与页面进行交互的响应。注册就是告诉游......
  • Javascript进阶笔记 - 常用事件
    常用事件目录常用事件1.onload事件2.onclick事件3.onblur事件4.onchange事件5.onsubmit事件6.onscroll事件7.onmousemove事件8.onmousedown&onmouseup事件9.on......
  • Javascript进阶笔记 - DOM模型与节点
    DOM模型与节点目录DOM模型与节点1.DOM模型2.节点2.1节点的常用方法1.DOM模型DOM(文档对象模型)就是把文档中的标签,属性,文本转换成对象来管理(类似于Java中的对象)do......
  • Javascript进阶笔记 - DOM的增删改查
    DOM的增删改查目录DOM的增删改查1.DOM查询1.1常规DOM查询方法1.2通过CSS选择器查找HTML元素1.3通过HTML对象选择器查找HTML对象2.DOM元素的增添3.DOM元素的修改......
  • Javascript进阶笔记 - DOM操作CSS样式
    DOM操作CSS样式目录DOM操作CSS样式1.操作样式2.获取当前样式3.其它样式相关属性1.操作样式可以通过JS修改元素的内联样式语法:元素.style.样式名=样式值注意:......
  • JavaScript笔记 - 字符串常用方法
    字符串目录字符串1.字符串搜索indexOf()search()match()includes()startsWith()2.字符串提取slice()substring()substr()charAt()charCodeAt()split()3.字符串替换repl......