Javascript专项练习_02——原型重构_隐式转换_this指向_类型转换_模式匹配_数组移动_回文判断

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript专项练习_02——原型重构_隐式转换_this指向_类型转换_模式匹配_数组移动_回文判断相关的知识,希望对你有一定的参考价值。

关于JavaScript的说法,下列选项中,错误的是()

javascript是一种动态类型,弱类型,基于原型,直译式的脚本语言
JavaScript是一门多线程的语言(x)
浏览器端的JavaScript包含ECMAScript,DOM对象以及BOM对象
JavaScript语言不仅可以在浏览器环境运行,也可以在node.js提供的服务器端平台运行

执行以下程序,输出结果为()

function fn(o,val)
           o.b = 1;
           val = 1;


var obj = b:0;
var num = 0;
fn(obj,num);
console.log(obj,num);
//b:1 0

x 的值是:

function A() 
    this.do=function() return ‘foo’;;


A.prototype=function() 
    this.do=function() return ‘bar’;
;

var x=new A().do();//foo

分清楚重写原型的的值和重写原型的方法
原型上的方法一般怎么写 是A.prototype.方法名如A.prototype.show=function(),然后再通过实例.show()才可以调用,这里直接将原型重写成一个函数就算修正了constructor,也没有用,


var a = parseInt([0,0,1,0,0].join('')+1) a的值为
var a = parseInt([0,0,1,0,0].join('')+1)
//join()方法将数组转为字符串,并用指定的分隔符进行分割
[0,0,1,0,0].join("") 后变成字符串'00100'
字符串'00100'+1 ,1是number,会将1转变为字符串后拼接
就变为 001001  parseInt后 变成 1001

在 JS 中类型转换只有三种情况,分别是:

转换为布尔值
转换为数字
转换为字符串
四则运算和==、条件运算都会隐式类型转换。

运算 但记住常见的就差不多了 加法运算 字符串 + 数字 将数字转为字符串 如111+‘222’=“111222” 非加法运算 字符串- x
/ 数字
将字符串转为数字 如’111’-11=100

  • 首先会判断两者类型是否相同。相同的话就是比值大小了
  • 类型不相同的话,那么就会进行类型转换 会先判断是否在对比 null 和 undefined,是的话就会返回 true
  • 判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
  • 判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断
  • 判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断

程序输出的是

var o = 
    age: 18,
    a: 
        fn: function()
            console.log(this.age);
       
    

o.a.fn();//undefined
//fn()方法内的this指代对象a,由于对象a并没有age属性,因此输出结果为undefined
var person=
       sex:'女',
       fn:function()
           console.log(this.sex);
       
   
person.fn()
//person.fn(); person在调用,this指向person,person对象的属性sex:"女",所以打印出女

以下这段代码的执行结果是什么?

console.log('one');
setTimeout(function()
    console.log('two');
,0);
console.log('three');
//‘one’’three’’two’
//定时器是异步宏任务,当同步代码执行结束,才会执行该任务

如果想要获取整个网页文档中h1标签的个数,可以通过()

如果想要获取整个文档中h1标签的个数,可以使用document.getElementsByTagName('h1')

执行以下 JavaScript 代码,输出结果为()

var a = 4399 < 0 || typeof(4399 + '');
console.log(a);//string

下列正则表达式中,能匹配到的字符串个数最多的是()

^abc$
^[abc]$
^[abc][1,2]$
^[abc]2$
^abc$  只能匹配abc这个固定的串,即一个
^[abc]$  匹配[]里面的某一个字母,所以只能匹配上a,b或者c,即三个
^[abc][1,2]$匹配以abc的一个字母开始,以1','2结尾的(这里又不是[12],可以匹配逗号才是),组合一下可知有9;9^[abc]2$匹配abc随便组成的两个字母,有aa,ab,ac,ba,bb,bc,ca,cb,cc;共九个

下面哪些语句可以 在JS里判断一个对象是否为String类型?

var s1 =  'hello';  // 'string'
var s2 = new String('hello');  // 'object'
console.log(typeof s1);
console.log(typeof s2);    
console.log(Object.prototype.toString.call(s2));//[object String]
console.log(s2 instanceof Object);//true

JS 中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;
对象类型即 object。首先原始值类型它就不是对象。
另外,要注意 ‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:

typeof 'hello';  // 'string'
typeof new String('hello');  // 'object'

当执行 ‘hello’.length 时,发现可以意料之中的返回 5,感觉 ‘hello’ 就是 String 对象啊,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 ‘hello’ 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,在其他面向对象语言里也有(如 C#)。


对于代码 var a = 10.42; 取出 a 的整数部分,以下代码哪些是正确的?

parseInt(a);
Math.floor(a);
Math.ceil(a);
a.split('.')[0];

下列选项中,能获取到input 节点的一项是()

<form class="file" name="upload">
    <input id="file" name="file"/>
</form>

执行以下程序,输出结果为()

var x = 10;
var y = 20;
var z = x < y ? x++:++y;
console.log('x='+x+';y='+y+';z='+z);
//x=11;y=20;z=10

这段代码中alert 两次输出结果为

var foo=”Hello”;
(function()
    var bar=”World”;
    alert(foo+bar);
)();
alert(foo+bar);

//此函数是一个匿名自执行函数,会先调用并执行一次,即alert (foo+bar)的字符串拼接;
 
// var bar=”World”是函数内部声明的局部变量,外部无法调用,所以外部的alert(foo+bar)会报错。

Number(null);

代码将返回:

var carname="Volvo";
var carname;
//顺序执行后,carname的值依然为Volvo

执行以下程序,输出结果为()

function a()
  console.log(this);
 
a.call(null);

在一个长度为n的顺序表中删除第i个元素,要移动_______个元素。如果要在第i个元素前插入一个元素,要后移_________个元素。

n-i,n-i+1

执行以下代码,a[1][0]的值为多少。()

int a[][3] = 1,2,3,4,5,6;

以下关于链表和数组说法正确的是()

答案: A C (正确)

A.new出来的数组也在堆中
B.数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)
C.数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n)
D.对于add和remove,ArrayList要比LinkedList快

回文判断

function fun() 
   let str = '';
   str = prompt('输入字符串');
   if (str.length <= 2) 
       return console.log('输入用例错误');
   
   for (let i = 0; i < parseInt(str.length / 2); i++) 
       if (str.charAt(i) !== str.charAt(str.length - 1 - i)) 
           return console.log('不是回文数');
       
   
   return console.log('是回文数');

fun();

以上是关于Javascript专项练习_02——原型重构_隐式转换_this指向_类型转换_模式匹配_数组移动_回文判断的主要内容,如果未能解决你的问题,请参考以下文章

javascript-专项练习——实现Ajax的机制——原型链的理解

JavaScript 原型原型链

原型与原型链(javascript)

JavaScript中显式原型和隐式原型的联系

JavaScript——原型5个规则

javaScript里的原型链